问题描述
查询user表的时候,联查role表,role是一个list集合,数据库有两个值,但是查询出来只有一个值。
<resultMap id="ItemResult" type="com.hht.csgo.domain.MyUser">
<id property="id" column="id"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="money" column="money"/>
<result property="enable" column="enable"/>
<result property="lastLogin" column="last_login"/>
<result property="stockId" column="stock_id"/>
<result property="createTime" column="create_time"/>
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap>
<resultMap id="RoleResult" type="com.hht.csgo.domain.Role">
<id property="id" column="id"/>
<result property="roleName" column="role_name"/>
</resultMap>
<select id="selectUserByUsername" resultMap="ItemResult">
select u.*,r.role_name,r.id from csgo_user u
left join csgo_user_role ur on ur.uid=u.id
left join csgo_role r on r.id=ur.rid
where u.username=#{username}
</select>
问题解决
发现应该是因为role的id与主表id同名,导致覆盖掉了一个数据,将role的id设置为rid后解决问题。