Android Комната: Стол с двумя внешними ключами, как создать отношения? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть сущность Task, у которой есть два внешних ключа:

  • первый с Project таблицей
  • второй с Category таблицей.

Я создал POJO с отношением к таблице Project и работает, но я не мог понять, как создать свой собственный POJO, который связан с двумя таблицами.

Я вставляю текущий код Задача (пропустите класс Project и Category)

@Parcelize
@Entity(
    tableName = Task.TABLE_NAME,
    foreignKeys = [
        ForeignKey(
            entity = Project::class,
            parentColumns = arrayOf("id"),
            childColumns = arrayOf("project_id"),
            onDelete = CASCADE
        ),
        ForeignKey(
            entity = Category::class,
            parentColumns = arrayOf("id"),
            childColumns = arrayOf("category_id"),
            onDelete = NO_ACTION
        )
    ]
)
data class Task(
    @PrimaryKey
    var id: String = UUID.randomUUID().toString(),
    var description: String? = null,
    @ColumnInfo(index = true, name = "category_id") var categoryId: String,
    @ColumnInfo(index = true, name = "project_id") var projectId: String,
    var from: Long,
    var to: Long

): Parcelable {
    companion object {
        const val TABLE_NAME = "tasks"
    }
}

и текущий код для связи с Project table

data class TaskWithProjectAndCategory(
    @Embedded
    val project: Project,

    @Relation(
        parentColumn = "id",
        entityColumn = "project_id"
    )
    val tasks: List<Task>
)

Заранее спасибо за ответ.

...