我如何通过儿童POJO的属性来合成ManyToMany POJO?

本文介绍了我如何通过儿童POJO的属性来合成ManyToMany POJO?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,我有两个类似的Room实体:,.和多对多关系的连接表,如下所示:,.和一些用于获取某种类型的复合POJO&QOOT;的复合类:,.那么,我有这种复合刀(&Q;):,工作的那个会按预期返回列表:每个TeacherWithCourses都有老师和List课程。第二个并非如此:生成的TeacherWithCourses对象正确加载了Teacher属性,但是List<Courses>属性有一个空列表,尽管基于INNER JOINS的复杂SELECT查询按预期筛选。,那么,如何像第一个DAO方法一样获取完整的TeacherWithCourses对象列表,但改为按课程ID进行筛选?,我认为您的问题是由于列名重复,并且基本上房间选择了不正确的值(我认为它使用最后一个值,因此将使用课程ID列值作为教师ID)。,即查询(带有联接)将由列组成:-,id(教师),
姓名(教师),
教师id,
Course_id,
id(课程),
名称(课程),假设您的数据库中有以下内容:-,并且使用了(LiveData不习惯简洁方便):-,然后,结果如您所报告的那样:-,但是(修复),如果使用不同的列名,例如:-,添加的数据基本上复制了原始课程(相同的ID#),因此:-,与:-,请注意,使用教师课程表只是说明链接了替代课程(而不是创建altTeacherCourses表),和:-,然后:-,即,当然不使用AltCourse,而是在其他相同的中使用AltCourse,则结果为:-,因此,解决方案是,:-,并使用:-,但是您还需要使用:-,其他评论:-,该问题是由于@Relationship的工作方式造成的。,@Relationship通过基础查询获取父级的所有@Relation对象。在检索子查询时,不会考虑@查询中任何不影响所检索的父级的内容。因此,您无法控制订单。,也许可以考虑”与教师一起上课”的方法,但这样您就无法控制教师的顺序了。另一种方法是对父项和子项使用@Embedded,但随后必须处理结果,即每个父项/子项组合的结果。,这篇关于我如何通过儿童POJO的属性来合成ManyToMany POJO?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册