【发布时间】:2021-02-10 09:38:33
【问题描述】:
我正在使用 RoomDB 在我的应用程序中存储实体,到目前为止,我只需要相对琐碎的查询,例如 SELECT * FROM table 和 DELETE * FROM table 以及稍微复杂一些的事情,例如返回 2 个表的连接复合模型,例如SELECT * from tableA INNER JOIN ON tableB tableA.tableBId = tableB.tableBId。
到目前为止,一切都很好。现在,我有一些我以前没有处理过的事情,我不确定我是否是 A)我的数据建模错误(因此无法查询来创建这些模型)或 B)我不知道零件完成这项工作所需的 SQL。
我远不是 SQL 专家,但我已经断断续续地使用它几年了。
下面是我想要实现的模型的最简单示例(标有 @Entity 以便生成 RoomDB 表):
data class FooPopulated(
val fooId: Long,
@Embedded
val barOne: Bar,
@Embedded
val barTwo: Bar,
@Embedded
val barThree: Bar
)
@Entity(primaryKeys = ["fooId"])
data class FooUnpopulated(
val fooId: Long,
val barOneId: Long,
val barTwoId: Long,
val barThreeId: Long
)
@Entity(primaryKeys = ["barId"])
data class Bar(
val barId: Long,
val name: String
)
所以会有2张桌子; Bar 和 FooUnpopulated 我想运行一个查询,将FooUnpopulated 表条目与Bar 表条目“连接”起来,这样我就可以取回FooPopulated 的集合。
我被难住了,谁能给点建议?我的FooPopulated 模型是否只是“错误”,因为它没有定义可以通过 SQL 查询满足的有效关系,或者,我是否缺少实现这一点的神奇 SQL 关键字/理解?
【问题讨论】:
标签: android sql kotlin android-room