Что-то, чего мне не хватает в отношениях «многие ко многим» в базе данных android комнаты - PullRequest
0 голосов
/ 17 февраля 2020

В соответствии с официальной документацией по использованию таблиц @Relation и Junction для перекрестных отношений между двумя таблицами, и у меня нет хороших результатов.

Я использую эти две сущности:

@Entity(tableName = "Dog",
foreignKeys = arrayOf(
    ForeignKey(entity = Owner::class,
        parentColumns = arrayOf("ownerId"),
        childColumns = arrayOf("dogOwnerId"))
))
data class Dog(
@PrimaryKey val dogId: Long,
val dogOwnerId: Long,
val name: String,
val cuteness: Int,
val barkVolume: Int,
val breed: String
)

@Entity
data class Owner(@PrimaryKey val ownerId: Long, val name: String)

используя эту таблицу, чтобы присоединиться к ним

@Entity(primaryKeys = ["dogId", "ownerId"])
data class DogOwnerCrossRef(
val dogId: Long,
val ownerId: Long
)

и этот класс для ответа Query :

data class DogWithOwners(
@Embedded val dog: Dog,
@Relation(
    parentColumn = "dogId",
    entity = Owner::class,
    entityColumn = "ownerId",
    associateBy = Junction(DogOwnerCrossRef::class)
)
val owners: List<Owner>
)

My DAO :

  @Transaction
  @Query("SELECT * FROM Dog")
  fun getdogWithOwners(): List<DogWithOwners>

результат всегда равен нулю для объектов Owner, который выглядит так, как будто @Transaction не был выполнен, я озадачен тем, как обработать этот запрос без выполнения запросов на соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...