Android会议室:如何建立关系模型?

Ren*_*ari 25 database sqlite orm android android-room

我刚刚开始与Room合作,虽然一切看起来都非常直观,但我目前还不清楚我究竟能如何处理关系.

由于SQLite是关系数据库,因此您可以指定对象之间的关系.尽管大多数ORM库允许实体对象相互引用,但Room明确禁止这样做.即使您不能使用直接关系,Room仍然允许您在实体之间定义外键约束.(来源:https://developer.android.com/topic/libraries/architecture/room.html#no-object-references)

  1. 你应该如何模拟多对多一对多的关系?
  2. 这在实践中会是什么样子(示例DAO +实体)?

Dev*_*rim 26

您可以使用@Relation注释来处理Room的关系.

一个便利注释,可以在Pojo中用于自动获取关系实体.当从查询返回Pojo时,它的所有关系也都由Room提取.

见文件.

(谷歌的文档有一些令人困惑的例子.我已经在另一个答案中写了步骤和一些基本的解释.你可以看一下)

  • 谢谢,这真的很有帮助!当他们在 Google I/OI 上展示 Room 时,他们认为一切都会变得非常简单。现在在看到如何处理关系之后,我认为它会很容易让你感到困惑,因为必须创建这么多类(如果你有 5 个以上的表和它们之间的许多关系,可能会开始混淆,哈哈)。 (2认同)