我发布这个是因为 stackoverflow 上已经存在同样的问题,但没有解决方案。我正在使用 Room 库进行数据库操作。我用@Embedded和@Relation用其他表创建了数据类。现在的问题是,当我在主表和连接表上放置具有多个 where 条件的连接查询时,它会返回连接表的所有/不正确数据。这表明它忽略了我在 DAO 类查询中设置的条件。重要的是,当我在外部数据库上运行相同的查询(在 chrome 中使用 stetho)时,它会按预期工作。请帮助我解决这个问题,因为这是非常关键的问题。房间版本:2.4.0
这是数据类:
data class ProductFull{
@Embedded val product: ProductMaster,
@Relation(
entity = ProductZone::class,
parentColumn = "productId",
entityColumn = "productId",
)
var productZone: ProductZone? = null,
}
这是 DAO 类方法:
@Query("select * from ProductMaster as pm inner join ProductZone as pz on pz.productId = pm.productId where pz.zoneId = 3")
abstract suspend fun getTempProducts(): List<ProductFull>
上面的查询返回 zoneId = 1 的数据类的 productZone 字段中的数据。而它应该只返回 zoneId = 3 的区域。