¿Cómo puedo volver a declarar índice de @Embedded usando habitación para Android?

Casper bang:

El uso de la anotación de habitaciones @Embedded es una forma práctica de aplanamiento una relación 1: 1 jerarquía de poder trabajar con él más fácil desde Java / Kotlin, pero estoy teniendo problemas para entender y deshacerse de las advertencias relacionadas con un índice asociado de la columna incrustado.

El esquema es el siguiente:

@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
}

Sigo recibiendo la siguiente advertencia:

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;

Incluso si trato de redeclare los índices como el siguiente:

@Entity(indices = [
Index(value = ["origin_ticketRecordId"], unique = true)
])
class TicketRecord {

    @PrimaryKey
    var id: String = ""

    @Embedded(prefix = "origin_")
    var origin: TicketLocationRecord? = null
}

¿Cómo me deshago de la advertencia, ya sea mediante la supresión de ellos (supongo que ya no son realmente necesarios?) O realmente fijándolo mediante re-declarándolos?

quealegriamasalegre :

Supongo agregando la siguiente a TicketRecord

@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED)

o

@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED)

ver cuál funciona.

Creo que ya no tienes que redeclare el índice como el var con el índice es, básicamente, el mismo valor que id en TicketRecorde id es la clave principal. Creo que las claves primarias son indexados por defecto en SQL.

Estoy impresionado de que origin_ticketRecordId incluso se agrega a la tabla resultante de la fusión. es justo redundante?

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=378901&siteId=1
Recomendado
Clasificación