Wie kann ich wieder declare Index von @Embedded mit Raum für Android?

Casper Bang:

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?

quealegriamasalegre:

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 TicketRecordund 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?

Ich denke du magst

Origin http://10.200.1.11:23101/article/api/json?id=378893&siteId=1
Empfohlen
Rangfolge