mybatis的一个嵌套集合,求各路好汉看看

GuoYJ 发布于 2013/04/09 00:01
阅读 3K+
收藏 0

不废话直接上码。

Role 类:根据角色得到资源

Power 类:{资源


private String leftpowerId;


private LeftPower leftPower; // 左菜单资源

}

那么我在roleMapper.xml{

    <resultMap type="com.mybatis.ssoft.model.Power" id="role_power_resultMap">
<id property="id" column="ID"/>
<result property="powerName" column="POWERNAME"/>
<result property="iconCls" column="ICONCLS"/>
<result property="rank" column="RANK"/>

<result property="leftpowerId" column="LEFTPOWERID"/>
<!-- 加载左边资源列表 -->
<association property="leftPower" column="LEFTPOWERID"
javaType="com.mybatis.ssoft.model.LeftPower" resultMap="power_leftPower" />


<!-- 递归自身children -->
<association property="parentPower" column="CHILDREN" javaType="com.mybatis.ssoft.model.Power">
<id property="id" column="ID"/>
<result property="powerName" column="POWERNAME"/>
<result property="iconCls" column="ICONCLS"/>
<result property="rank" column="RANK"/>
<association property="attributes" column="RESOURCEPOWERID"
javaType="com.mybatis.ssoft.model.PowerResource" resultMap="C"/>
<!-- 此处省略 leftPower -->
</association>



<!-- 加载权限资源url -->
<association property="attributes" column="RESOURCEPOWERID"
javaType="com.mybatis.ssoft.model.PowerResource" resultMap="C"/>


</resultMap>


<!-- 资源路径集合 -->
<resultMap type="com.mybatis.ssoft.model.PowerResource" id="C">
<id property="id" column="ID"/>
<result property="url" column="URL"/>
</resultMap>

}


其中棕色字体就是报错的:

Error getting nested result map values for 'leftPower'.  Cause: java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.mybatis.ssoft.dao.RoleMapper.power_leftPower

其中

 resultMap="power_leftPower" 对应的文件LeftPowerMapper.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.ssoft.dao.LeftPowerMapper">
<resultMap type="com.mybatis.ssoft.model.LeftPower" id="power_leftPower">


<id property="id" column="ID"/>
<result property="leftPowerName" column="LEFTPOWERNAME"/>
<result property="leftPowerContext" column="LEFTPOWERCONTEXT"/>
<result property="iconCls" column="ICONCLS"/>
<result property="rank" column="RANK"/>
<association property="topPower" column="TOPPWERID" javaType="com.mybatis.ssoft.model.TopPower" resultMap="A"/>


</resultMap>






</mapper>



刚学mybatis 可能还有没了解,没办法搞了好久了,试了很多办法,都报错了。

排版不太好,请见谅


加载中
0
xmut
xmut

少了命名空间!

应该是resultMap="com.mybatis.ssoft.dao.LeftPowerMapper.power_leftPower"

而不是resultMap="power_leftPow"

系统异常已经很清楚的告诉你在“com.mybatis.ssoft.dao.RoleMapper”下面没有这个“power_leftPow”!

PS:为什么不使用代码格式排版,那样看起来很痛苦,别人也不大乐意看你的问题!



0
GuoYJ
GuoYJ
先睡了,明早起来收网   
0
k
kakaximu

resultMap="power_leftPower" 写在同一个mapper.xml  文件下试试

<association property="leftPower" column="LEFTPOWERID"
javaType="com.mybatis.ssoft.model.LeftPower" resultMap="power_leftPower" />

leftPower 对应的字段是LEFTPOWERID

resultMap="power_leftPower"  里没这个字段的,只有ID

 

0
GuoYJ
GuoYJ

引用来自“kakaximu”的答案

resultMap="power_leftPower" 写在同一个mapper.xml  文件下试试

<association property="leftPower" column="LEFTPOWERID"
javaType="com.mybatis.ssoft.model.LeftPower" resultMap="power_leftPower" />

leftPower 对应的字段是LEFTPOWERID

resultMap="power_leftPower"  里没这个字段的,只有ID

 

也试过了 不报错,但是赋值不了。 整个leftPower 为null, 连leftPower 的ID 属性都是Power 的ID值 
0
GuoYJ
GuoYJ

引用来自“xmut”的答案

少了命名空间!

应该是resultMap="com.mybatis.ssoft.dao.LeftPowerMapper.power_leftPower"

而不是resultMap="power_leftPow"

系统异常已经很清楚的告诉你在“com.mybatis.ssoft.dao.RoleMapper”下面没有这个“power_leftPow”!

PS:为什么不使用代码格式排版,那样看起来很痛苦,别人也不大乐意看你的问题!



确实是少了命名空间,但是就算加上 和我之前写在一个mapper.xml 一样, POWER 类下面的 leftPower 属性为null。 
0
GuoYJ
GuoYJ
搞定了,重新写了下生成的数据源。
返回顶部
顶部