【问题标题】:Entity class must be annotated with @Entity实体类必须用@Entity注解
【发布时间】:2018-03-01 01:26:21
【问题描述】:

我在创建 @Relation 时遇到问题。我以前使用复杂的查询来处理 M:N,但我想尝试更简单的 @Relation 并依赖 ids。但是,每当我扩展或嵌入 @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())

请注意,不同的对象类型(classdata class 等)只是我尝试的混乱状态。尝试过各种版本的扩展,有MetadataXmp或者embedding、abstract、data class等,好像都不能引入@Relation

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    我遇到了类似的错误消息,对我来说,问题是我没有在数据库类中声明实体,但我已经注释了 pojo,发布答案,因为它可能会帮助有类似问题的人。

    【讨论】:

    • 救了我兄弟,非常感谢。我在实体数组中包含了错误的实体类
    【解决方案2】:

    该错误实际上与@RawQuery:observedEntities 有关。我正在观察结果 POJO 而不是底层的@Entity。错误消息只是指向具有误导性的 POJO。 Google 正在考虑改进错误消息。

    【讨论】:

      【解决方案3】:

      在我们的应用程序中实现房间数据库时,我遇到了同样的问题。但在我的情况下,当我增加到最新版本 2.3.0 时,房间数据库版本是 2.2.6 解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2018-07-12
        • 2019-10-19
        • 2016-01-29
        • 2014-05-03
        • 2018-04-19
        • 1970-01-01
        • 2012-04-02
        • 1970-01-01
        • 2014-08-01
        相关资源
        最近更新 更多