【发布时间】:2020-01-09 13:05:37
【问题描述】:
我正在尝试在其中一个表引用另一个表两次的表之间创建关系。代码如下:
@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
)
这是我创建“关系”类的方法:
data class MessageRelations(@Embedded var message: Message,
@Embedded var toContact: Contact,
@Embedded var fromContact: Contact)
这种方法导致 错误:多个字段具有相同的 columnName:id。字段名:message > id, toContact > id, fromContact > id。
我还尝试为注释 @Embedded(prefix = "to_") 和 @Embedded(prefix = "from_") 添加前缀。但在这种情况下,Room 无法在查询返回的文件与 MessageRelations 类中的文件之间找到匹配项。
如果您能提供任何有关如何解决此问题的提示,我将不胜感激。
【问题讨论】:
标签: android foreign-keys android-room