В настоящее время я работаю над приложением android, использующим room, с китайским словарем, где между символом и его англоязычными * У меня есть класс, который я использую для хранения символа и его списка определений:
data class Word (
@Embedded val character : Character,
@Relation(
parentColumn = "character_id",
entityColumn = "parent_character_id"
//,associateBy = Junction(JunctionWordXDefinition::class)
)
val definitions : MutableList<Definition>
)
Моя цель - дать пользователю возможность создавать списки этих слов для действия, и поэтому это будет состоять из отношения «многие ко многим» между topi c и словами.
Мой вопрос: поскольку android требует, чтобы классы, используемые в соединении, были либо сущностью, либо представление базы данных, можно ли использовать мой класс «Один ко многим» в таблице сопоставления? Или мне нужно изменить его для использования таблицы соединений?
Это классы, которые я создал, чтобы попытаться реализовать это, но я получаю сообщение об ошибке, в котором говорится, что Word должен быть сущностью или представлением базы данных.
@Entity(tableName = "topics")
data class Topic(
val title: String = ""
) {
@ColumnInfo(name = "topic_id")
var id : Int= 0
}
@Entity(primaryKeys = ["topic_id", "character_id"])
data class JunctionTopicXWord (
val topicId : Int,
val characterId : Int
)
data class Lesson(
@Embedded var topic: Topic,
@Relation(
parentColumn = "topic_id",
entityColumn = "character_id",
associateBy = Junction(JunctionTopicXWord::class)
)
val words : List<Word>
)