Android База данных комнаты LiveData Response с данными из двух разных таблиц - PullRequest
0 голосов
/ 05 августа 2020

У меня есть две таблицы,

ParentEntity ( id: String, name: String)
ChildEntity (id: String, name: String, parentId: String)

Мне нужен объект liveData, который содержит такой объект:

ParentEntity(id: String, name: String, children: List<ChildEntity>)

Я понимаю, что мне нужен какой-то оператор соединения, но я я не уверен, как это должно быть go и каким должно быть возвращаемое значение.

очевидно не может быть

@Query("JOIN STATEMENT")
fun queryParentsWithChildren(): LiveData<List<ParentEntity>>

, потому что ParentEntity не содержит список детей

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать операторы соединения, но обычно в вашем случае это Room's Отношения один-ко-многим

Вы должны добавить еще один класс (без @Entity):

data class ParentWithChildren(
    @Embedded val parent: ParentEntity,
    @Relation(
          parentColumn = "id",
          entityColumn = "parentId"
    )
    val children: List<ChildEntity>
)

и ваш метод dao будет без соединения:

@Transaction
@Query("select * from parent") // <- replace 'parent' with your actual table's name
fun queryParentsWithChildren(): LiveData<List<ParentWithChildren>>
...