Die Zimmer Annotation @Embedded ist ein praktischer Weg aus Abflachen eine 1: 1 - Hierarchie der Lage sein , leichter zu arbeiten , damit aus Java / Kotlin, aber ich Mühe Verständnis habe und loszuwerden, die immer Warnungen zu einem zugehörigen Index im Zusammenhang der eingebettet Spalte.
Das Schema sieht wie folgt aus:
@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
}
Ich erhalte die folgende Warnung:
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;
Auch wenn ich versuche, die Indizes wie die folgenden zu deklarieren:
@Entity(indices = [
Index(value = ["origin_ticketRecordId"], unique = true)
])
class TicketRecord {
@PrimaryKey
var id: String = ""
@Embedded(prefix = "origin_")
var origin: TicketLocationRecord? = null
}
Wie kann ich die Warnung loswerden, entweder indem man sie unterdrückt wird (ich glaube, sie sind nicht mehr wirklich benötigt?) Oder tatsächlich durch die Festsetzung sie wieder zu erklären?
Ich denke, indem Sie die folgende zu TicketRecord
@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED)
oder
@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED)
sehen, welche Arbeiten.
Ich glaube , Sie brauchen nicht , den Index als die var mit dem Index zu deklarieren ist basicaly der gleiche Wert wie ID in TicketRecord
und ID ist der Primärschlüssel. Ich denke , dass Primärschlüssel standardmäßig in SQL indiziert sind.
Ich bin beeindruckt, dass origin_ticketRecordId sogar zu der fusionierten Tabelle hinzugefügt wird. es ist überflüssig, nicht wahr?