小泮 2019-09-13 10:45 采纳率: 0%
浏览 1331

Mybtias 发现极度尴尬的事情,实体类中嵌套一个实体类,嵌套的实体类再嵌套一个实体类数组,似乎无法用association 和 collection 依次表达,返回列会只有一个

RT.
当实体类存在这种格式

class A{ B b };
class B{ List<C> cList};

的时候,
myabtis在使用 resultMap 时,由于要顾及层级关系,第一个A中嵌套的B,则应该是使用 association 表达关系,第二个则用 collection 表达关系。
这时候神奇的事情出现了,当返回数据是多条时(其sql语句在mysql中使用返回6条)但是由于使用了 association , 其后使用的啃爹的 collection 则只返回一条数据了。
尝试解决方法: 1. 删除 association 相关项,让它自动寻找,结果系统报错,找不到 cList 这个东东,此解决宣告告破
2. 将association改为collection,但是由于第一个collection实际上时只有一个的,照样是返回了1条数据,而实际上却需要返回6条数据
贴一下相关mapper格式

<resultMap id="aMap" type="...A">
        <id property="id" column="id"/>
        <association property="b" javaType="...B">
                        ...
            <collection property="cList" ofType="...C">
                                ...
            </collection>
        </association>
    </resultMap>
  1. 由此我在尝试了多个方法之后,实在没办法只能采用偷梁换柱的方法,将cList的数据嵌套在A中,然后返回6个数据给外层的cList,然后再将外层的cList = 内层的 cList,然后外层的cList再置空
  2. 虽然通过小滑头方式解决了,但是我依旧不甘心,我这种偷梁换柱就是对仅学到的知识进行一次重复处理,在效率上肯定要差于一步处理的方法的,不知道有没有大哥能直接处理这种数据格式的形式用mybatis的相关resultMap一步到位?谢谢相关大哥了,大家也可以一起讨论,这种问题可能还有其它处理方法
  • 写回答

1条回答 默认 最新

  • Roc-xb 后端领域优质创作者 2019-09-13 12:11
    关注

    B的映射关系在B中配置就好了,不用在A中配置嵌套语句,这样只会增加代码的复杂度。

    评论

报告相同问题?

悬赏问题

  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制