tk.mybatis使用resultmap进行collection映射问题

当使用tk.mybatis时,自定义SQL过程中用到了resultMap的collection映射,但是在使用Generator生成的Bean里添加自定义的List后,在Mapper文件中如下映射会报错:

表结构:

A:user_id user_name user_age

B:Role_id Role_name Role_path

Bean:

public class User{

@Column("USER_ID")
private String userId;

@Column("USER_NAME")
private String userName;

@Column("USER_AGE")
private String userAge;

private List<Role> roles;
//getter and setter
}

public class Role{

@Column("ROLE_ID")
private String roleId;

@Column("ROLE_NAME")
private String roleName;

@Column("ROLE_PATH")
private String rolePath;
//getter and setter
}

mapper.xml:

<resultMap id="userMap" type="com.XXX.model.User">
 <result property="userId" jdbcType="VARCHAR" column="USER_ID"/>
 <result property="userName" jdbcType="VARCHAR" column="USER_NAME"/>
 <result property="userAge" jdbcType="VARCHAR" column="USER_AGE"/>
 <collection property="roles" resultMap="roleMap"/>
</resultMap>

<resultMap id="roleMap" type="com.XXX.model.Role">
 <result property="roleId" jdbcType="VARCHAR" column="ROLE_ID"/>
 <result property="roleName" jdbcType="VARCHAR" column="ROLE_NAME"/>
 <result property="rolePath" jdbcType="VARCHAR" column="ROLE_PATH"/>
</resultMap>

此时启动项目会报错:

 Caused by: java.lang.IllegalStateException: No typehandler found for property roles

此时需要为我们在User类中自定义的roles添加注解@javax.persistence.Transient来忽略此字段,使其使用我们自定义的map就好了。

详见:https://github.com/abel533/MyBatis-Spring-Boot/issues/4

猜你喜欢

转载自my.oschina.net/mrfu/blog/1793949