实体类必须使用@Entity进行注释

时间:2018-03-01 01:26:22

标签: android android-room

我在创建@Relation时遇到问题。我以前使用复杂的查询来处理M:N,但我想尝试更简单的@Relation并依赖于ID。但是,每当我扩展或嵌入@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或嵌入,抽象,数据类等各种版本的扩展。我似乎无法介绍@Relation

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我正面临着类似的错误消息,对我来说,问题是我没有在Database类中声明实体,但我对pojo进行了注释,发布答案,因为它可能会帮助类似问题的人。