开发者社区> 问答> 正文

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

不废话直接上码。

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 可能还有没了解,没办法搞了好久了,试了很多办法,都报错了。

排版不太好,请见谅


展开
收起
爱吃鱼的程序员 2020-06-22 20:29:05 393 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    少了命名空间!

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

    而不是resultMap=" power_leftPow"

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

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



    先睡了,明早起来收网   

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

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

    leftPower对应的字段是LEFTPOWERID

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

     

    引用来自“kakaximu”的答案

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

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

    leftPower对应的字段是LEFTPOWERID

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

     

    引用来自“xmut”的答案

    少了命名空间!

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

    而不是resultMap=" power_leftPow"

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

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



    搞定了,重新写了下生成的数据源。
    2020-06-22 20:29:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载