我在创建@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())
请注意,不同的对象类型(class
,data class
等)只是我尝试混乱的状态。我已尝试使用MetadataXmp
或嵌入,抽象,数据类等各种版本的扩展。我似乎无法介绍@Relation
。
答案 0 :(得分:0)
该错误实际上与@RawQuery:observedEntities有关。我正在观察结果POJO而不是底层的@Entity。错误消息只是指向误导的POJO。 Google正在考虑改进错误消息。
答案 1 :(得分:0)
我正面临着类似的错误消息,对我来说,问题是我没有在Database类中声明实体,但我对pojo进行了注释,发布答案,因为它可能会帮助类似问题的人。