Класс сущности должен быть аннотирован @Entity

У меня проблемы с созданием @Relation, Ранее я использовал сложный запрос для обработки M:N, но я хотел попробовать более простой @Relation и полагаться на идентификаторы. Тем не менее, я получаю ошибку всякий раз, когда я расширяю или встраиваю @Relation учебный класс. Это работает:

@Entity(tableName = "meta",
foreignKeys = [ForeignKey(
    entity = FolderEntity::class,
    parentColumns = ["id"],
    childColumns = ["parentId"],
    onDelete = CASCADE)],
indices = [
    Index(value = ["uri"], unique = true),
    Index(value = ["documentId"], unique = true),
    Index(value = ["parentId"])])
open class MetadataEntity {
@PrimaryKey(autoGenerate = true)
    var id: Long = 0
    ...
}

@TypeConverters(MetadataResult::class)
class MetadataResult : MetadataEntity() {
   var keywords: List<String>? = null
   var parentUri: String? = null

   @TypeConverter
   fun fromGroupConcat(keywords: String?): List<String>? = keywords?.split(",")
}

Однако это не работает:

data class MetadataXmp(
   @Embedded
   val metadata:MetadataEntity,
   @Relation(
        parentColumn = "id",
        entityColumn = "metaId",
        projection = ["subjectId"],
        entity = SubjectJunction::class)
   var subjectIds: List<Long> = Collections.emptyList(),

   @Relation(
        parentColumn = "parentId",
        entityColumn = "id",
        projection = ["documentUri"],
        entity = FolderEntity::class)
   var parentUris: List<String> = Collections.emptyList())

Обратите внимание, что тип объектаclass, data classи т. д.) - это просто беспорядок моих попыток. Я пробовал различные версии расширения с MetadataXmp или встраивание, абстракция, класс данных и т. д. Я не могу представить @Relation,

3 ответа

Я сталкивался с подобным сообщением об ошибке, для меня проблема заключалась в том, что я не объявил enity в классе Database, но я аннотировал pojo, публикуя ответ, поскольку это может помочь кому-то с подобной проблемой.

Ошибка на самом деле связана с @RawQuery: seenEntities. Я наблюдал за результатом POJO вместо базового @Entity. Сообщение об ошибке просто указывает на POJO, который вводит в заблуждение. Google смотрит на улучшение сообщения об ошибке.

Я столкнулся с той же проблемой при реализации БД комнаты в нашем приложении. но в моем случае версия БД комнаты - 2.2.6, когда я увеличиваюсь до последней версии 2.3.0, моя проблема решена.

Другие вопросы по тегам