android - Room DB 使用 @Relation 将表 A 连接到表 B 和 B 到 C
问题描述
这似乎是一个不同的基本查询,但我无法通过关系来实现。
假设表 A 需要与表 B 连接
data class MasterQuery{
@Embedded var tableA: TableA,
@Relation(
parentColumn = "table_a_relation",
entityColumn = "table_b_details"
)
val tableB: TableB
}
现在我们如何将 TableB 连接到 TableC?并从所有三个表中获取 MasterQuery 结果。
首先不能将嵌入和关系放在同一个字段上。
然后这也失败了-
data class MasterQuery{
@Embedded var tableA: TableA,
@Relation(
parentColumn = "table_a_relation",
entityColumn = "table_b_details",
entity = SubQuery::class)
val subQuery: SubQuery
}
@Entity
data class SubQuery{
@Embedded var tableB: TableB,
@Relation(
parentColumn = "table_b_relation",
entityColumn = "table_c_details"
)
val tableC: TableC
}
错误找不到子查询。
请帮我解决这个问题。
解决方案
尝试对您的课程进行以下更正:
data class MasterQuery{
@Embedded var tableA: TableA,
@Relation(
parentColumn = "table_a_relation",
entityColumn = "table_b_details",
//entity = SubQuery::class) <---- 1. replace this with TableB class
entity = TableB::class)
val subQuery: SubQuery
}
//@Entity <---- 2. You don't need this
data class SubQuery{
@Embedded var tableB: TableB,
@Relation(
parentColumn = "table_b_relation",
entityColumn = "table_c_details"
)
val tableC: TableC
}
推荐阅读
- javascript - 谷歌地图不显示,HTML
- kubernetes - 使用 Bastion SSH 到 Kubernetes pod
- karate - 如何在空手道中参数化来自詹金斯的黄瓜选项标签
- c++ - Opencv 从缓冲区写入和读取
- javascript - 用值初始化 Guard
- javascript - Chrome [VM] 文件在每次加载时创建事件处理程序
- python - 计算熊猫数据框中的摘要行
- php - mysqli_fetch_assoc() 在响应版本中不返回任何内容
- php - preg_replace 用于字符串中的“phpbb”报价和颜色标签
- nlp - 句子的实体检测在训练和测试句子中有所不同