android - 实体类必须使用@Entity注解

标签 android android-room

我在创建 @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())

请注意,不同的对象类型(数据类等)只是我尝试的困惑状态。我尝试过使用 MetadataXmp 或嵌入、抽象、数据类等扩展的各种版本。我似乎无法引入 @Relation

最佳答案

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

关于android - 实体类必须使用@Entity注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49041259/

相关文章:

Android,在imageview上一张一张显示图片列表

android-room - Android room 两个主键,一个自动生成

java - Worker 上的数据库更改后 LiveData 未更新

java - 单击时微调器选定的项目不显示

android - 在 Kotlin 更新到 1.6.0 后,不确定如何将 Cursor 转换为此方法的返回类型

android - 如何控制菜单中的图像大小?

java - 项目未填满空间

java - 多个构造函数的替代方案

Android:MediaPlayer 启动新 Activity 后未发布而已完成

android - 在 Android Room 数据库中查询全文搜索表