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