Я пытаюсь создать связь между таблицами, где одна из таблиц ссылается на другую дважды. Вот код:
@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)
Этот подход приводит к ошибке : несколько полей имеют одинаковое имя_ столбца : Я бы. Имена полей: message> id, toContact> id, fromContact> id.
Я также пытался добавить префиксы к аннотации @ Embedded (prefix = "to _") и @ Embedded (prefix = "from _") . Но в этом случае Room не может найти совпадения между полями, возвращаемыми запросом, и файлами в MessageRelations классе.
Буду благодарен за любые подсказки о том, как решить эту проблему.