Комната @ Отношение с использованием составного индекса - PullRequest
0 голосов
/ 30 января 2019

Контекст

Здравствуйте, я работаю с 2 таблицами, связанными внешним ключом, WorkOrderItemUsage и WorkOrderItemUsageLot.Каждый workOrderItemUsage может иметь несколько лотов, так что это отношение 1 к n, чтобы упростить мою работу. Я реализую вспомогательный объект WorkOrderItemUsageWithLots, который используется для извлечения всех данных из обеих таблиц за один раз с использованием room @ Relation.

Проблема

Я пытался использовать @Relation с одним столбцом, и он работает правильно, но мне нужно стабилизировать мои отношения на основе составного ключа, такого как внешний ключ, Я понимаю, что нет поддержки составных ключей с помощью @Relation Я пытаюсь связать его с помощью индекса, я что-то упустил?Нужно ли отказываться от использования @Relation в пользу хороших старых SQL-соединений в запросах?

  • ошибка: не удается найти столбец родительского объекта woItemUsagePk в WorkOrderItemUsageWithLots
  • Ошибка печатаетдоступные столбцы для @ Relation
  • Опции: woIdItemUsage, itemId, itemNumber, itemThirdNumber, itemDescription, amountMeasure, branchId, branchDescription, locationId, дозовое количество, measureMeasureUnit, itemAction, itemPlague, itemJustilListListListList.Live.U.

    @Entity(
    primaryKeys = ["itemId", "branchId", "woIdItemUsage"],
    foreignKeys = [
        ForeignKey(entity = WorkOrder::class,
                parentColumns = ["woId"],
                childColumns = ["woIdItemUsage"],
                onUpdate = ForeignKey.CASCADE,
                onDelete = ForeignKey.CASCADE)],
    indices = [Index("woIdItemUsage", "itemId", "branchId", name = "woItemUsagePk", unique = true)]
    
    @Entity(
            primaryKeys = ["woIdItemUsageLot", "itemId", "branchId", "lotId"],
            foreignKeys = [
                ForeignKey(entity = WorkOrderItemUsage::class,
                        parentColumns = ["woIdItemUsage", "itemId", "branchId"], 
                        childColumns = ["woIdItemUsageLot", "itemId", "branchId"],
                        onUpdate = ForeignKey.CASCADE,
                        onDelete = ForeignKey.CASCADE)],
            indices = [Index("woIdItemUsageLot", "itemId", "branchId", name = "woItemUsageLotPk", unique = true)])
    
    
    
    
    class WorkOrderItemUsageWithLots(@Embedded var itemUsage: WorkOrderItemUsage) {
    
    @Relation(parentColumn = "woItemUsagePk", entityColumn= "woItemUsageLotPk")
    var lotList: List<WorkOrderItemUsageLot> = emptyList()}
    

1 Ответ

0 голосов
/ 21 августа 2019

У вас нет поля woItemUsagePk, объявленного в вашем классе сущности.Вам нужно объявить поле для хранения значения, Room не собирается динамически объявлять его для вас.

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