Использование аннотации Room @Embedded - это удобный способ выровнять иерархию 1: 1, чтобы было проще работать с ней из Java / Kotlin, но у меня возникают проблемы с пониманием и избавлением от предупреждения, связанные со связанным индексом встроенного столбца.
Схема выглядит следующим образом:
@Entity
class TicketRecord {
@PrimaryKey
var id: String = ""
@Embedded(prefix = "origin_")
var origin: TicketLocationRecord? = null
}
@Entity(foreignKeys = [(ForeignKey(entity = TicketRecord::class, parentColumns = arrayOf("id"), childColumns = arrayOf("ticketRecordId"), onDelete = ForeignKey.CASCADE))],
indices = [Index("ticketRecordId")])
class TicketLocationRecord {
@PrimaryKey
var id: String = ""
// ForeignKey
var ticketRecordId: String? = null
}
Я получаю следующее предупреждение:
warning: Indices defined in TicketLocationRecord will be dropped when it is merged into TicketRecord (origin). You can re-declare them in TicketRecord. - origin in TicketRecord
private TicketLocationRecord origin;
Даже если я попытаюсь переопределить индексы, как показано ниже:
@Entity(indices = [
Index(value = ["origin_ticketRecordId"], unique = true)
])
class TicketRecord {
@PrimaryKey
var id: String = ""
@Embedded(prefix = "origin_")
var origin: TicketLocationRecord? = null
}
Как мне избавиться от предупреждения, либо подавив его (я полагаю, что он больше не нужен?), Либо фактически исправив его повторно объявив их?