【发布时间】: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())
请注意,不同的对象类型(class、data class 等)只是我尝试的混乱状态。尝试过各种版本的扩展,有MetadataXmp或者embedding、abstract、data class等,好像都不能引入@Relation。
【问题讨论】:
标签: android android-room