Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何重新声明@Embedded using Room for Android的索引?_Java_Android_Kotlin_Android Room - Fatal编程技术网

Java 如何重新声明@Embedded using Room for Android的索引?

Java 如何重新声明@Embedded using Room for Android的索引?,java,android,kotlin,android-room,Java,Android,Kotlin,Android Room,使用Room注释@Embedded是一种简化1:1层次结构的简便方法,以便能够从Java/Kotlin中更轻松地使用它,但我在理解和摆脱嵌入列方面遇到了困难 架构如下所示: @Entity class TicketRecord { @PrimaryKey var id: String = "" @Embedded(prefix = "origin_") var origin: TicketLocationRecord? = null } @Entity(fo

使用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
}

我如何消除警告,或者通过抑制它们(我想它们不再是真正需要的?)或者通过重新声明它们来修复它?

我想通过将以下内容添加到
TicketRecord

@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_ENTITY_IS_DROPPED)

看看哪个有效

我认为您不需要重新声明索引,因为带有索引的var基本上与
TicketRecord
中的id值相同,id是主键。我认为主键在sql中是默认索引的


origin_ticketRecordId甚至被添加到合并表中,这给我留下了深刻的印象。这是多余的,对吗?

这对我没有帮助。这方面有更新吗?谢谢,你是怎么修好的?
@SuppressWarnings(RoomWarnings.INDEX_FROM_EMBEDDED_FIELD_IS_DROPPED)