Android 房间。错误:多个字段具有相同的列名称
我试图在其中一个表引用另一个表两次的表之间创建关系。代码如下:Android 房间。错误:多个字段具有相同的列名称,android,foreign-keys,android-room,Android,Foreign Keys,Android Room,我试图在其中一个表引用另一个表两次的表之间创建关系。代码如下: @Entity(tableName = "message", foreignKeys = [ ForeignKey(entity = Contact::class, parentColumns = ["id"], childColumns = ["toContactId"],
@Entity(tableName = "message",
foreignKeys = [
ForeignKey(entity = Contact::class,
parentColumns = ["id"],
childColumns = ["toContactId"],
onDelete = NO_ACTION
),
ForeignKey(entity = Contact::class,
parentColumns = ["id"],
childColumns = ["fromContactId"],
onDelete = NO_ACTION)
], indices = [Index("toContactId"), Index("fromContactId")]
)
data class Message(
@PrimaryKey var id: String,
var creationDate: Date,
var messageStatus: MessageStatus,
var toContactId: String,
var fromContactId: String,
var text: String
)
@Entity(tableName = "contact")
data class Contact(
@PrimaryKey val id: String,
val firstName: String,
val lastName: String,
val cellPhone: String,
val email: String
)
下面是我如何创建“关系”类的:
这种方法的结果是
错误:多个字段具有相同的列名称:id。字段名称:message>id,toContact>id,fromContact>id。
我还尝试为注释@Embedded(prefix=“to”和@Embedded(prefix=“from”)添加前缀。但在这种情况下,Room无法在查询返回的文件和MessageRelations类中的文件之间找到匹配项
如果有任何关于如何解决此问题的提示,我将不胜感激。我相信使用而不是@Embed将解决这些问题,因为它不会包含它根据关系构建对象的实体中的字段/变量
所以你会有这样的想法:-
data class MessageRelations(@Embedded var message: Message,
@Relation(parentColumn = "toContactId", entityColumn = "id") var toContact: Contact,
@Relation(parentColumn = "fromContactId", entityColumn = "id") var fromContact: Contact)
- 注意:以上为原则性代码,未经测试或运行
data class MessageRelations(@Embedded var message: Message,
@Relation(parentColumn = "toContactId", entityColumn = "id") var toContact: Contact,
@Relation(parentColumn = "fromContactId", entityColumn = "id") var fromContact: Contact)