可以在Android Room中查询@Relation

时间:2018-03-06 15:57:04

标签: android android-room

我真的没想到这会起作用,但Android Room @Relation可以使用WHERE子句进行过滤。例如:

SELECT * FROM meta WHERE subjectId IN (?)

@RawQuery(observedEntities = [ MetadataEntity::class, SubjectJunction::class ])
internal abstract fun internalGetImages(query: SupportSQLiteQuery): LiveData<List<MetadataXmp>>

`

data class MetadataXmp @JvmOverloads constructor(
    @Embedded
    val metadata:MetadataEntity,
    @Relation(
            parentColumn = "id",
            entityColumn = "metaId",
            projection = ["subjectId"],
            entity = SubjectJunction::class)
    var subjectIds: List<Long> = Collections.emptyList())

这会引发no such column: subjectId。我怀疑@Relation仅基于核心查询结果收集,并且关系列永远不会出现在初始查询中,但我想看看是否可以引用该关系。

1 个答案:

答案 0 :(得分:0)

也许有点晚,但是您可以查询@Relation。您可以找到示例here(请参阅提示6)。