安卓房间:与更多孩子的关系



我使用的是Android Room,我必须使用与多个孩子的关系。我必须用相同的模式做这个问题中解释的同样的事情,(如何使用Android Room创建一个包含两个或多个外键的表?(,但使用@Relationship而不是@ForeignKey。

我需要这个,因为我必须能够从父亲那里接触到孩子,没有任何疑问。

我看了文件,但他们只解释了一个孩子的情况(https://developer.android.com/training/data-storage/room/relationships#nested-关系(。

有人能帮我吗?

感谢您的耐心和帮助!

首先没有@Relationship,而不是@ForeignKey

@ForeignKey定义了一个约束(规则(,规定子列的值必须是父列的引用列中的值,否则将发生冲突。

@Relationship定义一个关系,然后Room通过添加子查询来为父级从子级获取所有相关实体。

您可以有这两者的任意组合(none、1或两者(。尽管CCD_ 5可能最好与CCD_。

  • 请参阅Room数据库中@ForeignKey和@Relation注释之间的区别

假设您希望一个实体/表具有多个子项,那么您只需要具有父级@Embedded和多个@Relationship的POJO。

@Dao@Query只需要提取父母,获取孩子的工作由Room生成的代码完成。提取POJO对象,子对象将成为POJO中的对象。

  • 请注意,您仅限于ALL子项,而不是子集,因此WHERE子句对获得的子项没有影响(因此在@Relationship的概述中使用了大写ALL(

如果你指的是嵌套的孩子。即父母的子女有自己的子女。然后你采取一种分层的方法。启动没有父级(最低子级(的子级,然后为具有子级(ren((@Relationship(的父级(@Embedded(创建POJO。对于该父级的父级,您使用@Relationship为下级父级的其父级创建一个POJO,通知该实体不是子级的POJO而是实体,但相关对象属于POJO类型。

您可能希望参考此示例"数据类到房间"实体,这涵盖了上述两种情况。

最新更新