私のAndroid用ルームを使用して@Embeddedの再宣言指数どのようにしていますか?

キャスパーバン:

1階層は、Java / Kotlinからそれでより簡単に作業できるように、私はトラブルの理解を持つとのRID取得しています:ルームアノテーションを使用して@Embeddedは1を平坦化する便利な方法で関連する指標に関連した警告の組み込み列。

スキーマは次のようになります。

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

どのように私は、どちらかそれらを抑制することにより、警告を取り除くか、または実際にそれらを再宣言することによって、それを固定(私は、彼らはもはや本当に?必要ありません推測しますか)?

quealegriamasalegre:

私はに次を追加することで推測します TicketRecord

@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED)

若しくは

@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED)

これは1つの作品参照してください。

私はあなたがインデックスを持つvarは内のidと同じ値basicalyであるとして、インデックスを再宣言する必要はいけないと思うTicketRecordとidが主キーです。私は、主キーは、SQLではデフォルトでインデックス化されていると思います。

私はorigin_ticketRecordIdもマージされたテーブルに追加されていることを印象づけています。それは冗長な権利でありますか?

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=378897&siteId=1