Предположим, у меня есть следующие объекты:
Сущность A
:
@Entity(
tableName = "a_table"
)
data class A(
val name: String
) {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "a_id")
var id: Long = 0
}
И Сущность B
:
@Entity(
tableName = "b_table"
)
data class B(
val type: String
) {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "b_id")
var id: Long = 0
}
Сущность B
заполнена разными типами.
A
Сущности могут иметь ссылку на B
Сущности (отношение "M: N").
Итак, добавил объект Entity:
@Entity(
tableName = "a_b_join",
primaryKeys = ["fk_a_id", "fk_b_id"],
foreignKeys = [
ForeignKey(
childColumns = arrayOf("fk_a_id"),
entity = A::class,
parentColumns = arrayOf("a_id")
), ForeignKey(
childColumns = arrayOf("fk_b_id"),
entity = B::class,
parentColumns = arrayOf("b_id")
)
]
)
class ABJoin(
@ColumnInfo(name = "fk_a_id") var fkAId: Long = 0,
@ColumnInfo(name = "fk_b_id") var fkBId: Long = 0
)
В конце я хочу POJO, которое выглядит так:
class AwithBPojo {
@Embedded
lateinit var a : A
@???
val listOfB : List<B> = arrayListOf()
}
Почему это так сложно для такой простой работы? Или я что-то не так делаю? Я просто хочу получить список всех A
объектов с указанными B
объектами.
Я нахожу учебники только с примером кода, который выглядит следующим образом:
class AwithBPojo {
@Embedded
lateinit var a : A
@Relation(
parentColumn = "b_id",
projection = ["fk_b_id"],
entityColumn = "fk_b_id",
entity = ABJoin::class
)
val listOfB : List<Long> = arrayListOf()
}
Но я не хочу иметь только идентификаторы сущности B
, потому что потом сложно объединять LiveData.