В Androidx Room, как получить все отношения сущностей в POJO?
У меня есть следующая структура базы данных, где A является родителем B, а B является родителем C:
@Entity(tableName="a")
class A(){
@PrimaryKey
var id: Long = 0L,
var name: String = ""
}
@Entity(tableName= "b",
foreignKeys = arrayOf(
ForeignKey(
entity = A::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("a_id"),
onDelete = ForeignKey.CASCADE
))
)
class B() {
@PrimaryKey(autoGenerate = true)
var id: Long = 0L,
@ColumnInfo(name="a_id")
var aId: Long = 0L,
var name: String = ""
)
@Entity(tableName= "c",
foreignKeys = arrayOf(
ForeignKey(
entity = B::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("b_id"),
onDelete = ForeignKey.CASCADE
))
)
data class C (
@PrimaryKey(autoGenerate = true)
var id: Long = 0L,
@ColumnInfo(name ="b_id")
var bId: Long = 0L,
var name: String = ""
)
Я хочу написать POJO, который должен содержать B и все его C и его родительский A:
class BAndAllCs {
@Embedded
var b: B? = null
@Relation(parentColumn = "id",
entityColumn = "b_id",
entity= C::class)
var c_all: List<C> = ArrayList()
//how to retrieve parent A of B?
}
Так, чтобы в BDao я мог добавить это:
@Transaction
@Query("SELECT * FROM B")
List<BAndAllCs> getAllB();
Возможно ли встраивать родительский элемент "b" в "a"?Есть ли способ идиоматически закодировать этот вид использования?Любая рекомендуемая лучшая практика для этого?