Android Room将约束应用于关系

时间:2018-09-10 19:19:19

标签: android android-room

我知道Room允许我们使用@Relation关键字建立1-N关系。尽管我想知道是否可以对这种关系应用条件。

假设我有以下POJO

class UserAndPets {
    @Embedded
    lateinit var user: User

    @Relation(entityColumn = "ownerId", parentColumn = "userId")
    lateinit var pets: List<Pets>
}

interface UserDao {
    @Query("SELECT * FROM users WHERE userId = :userId LIMIT 1")
    fun getUserAndPetsForUserId(userId: String): UserAndPets?
}

以上方法使我可以查询一个用户及其所有宠物。尽管我可以通过某种方式查询用户及其最近的10只宠物?还是某个用户及其所有属于特定类型的宠物?

谢谢

1 个答案:

答案 0 :(得分:0)

如果“宠物”中的“ ID”字段是自动递增的,则此查询应为您提供所需的结果:

@Query("SELECT * FROM pets WHERE ownerId = :userId ORDER BY Id DESC LIMIT 10")

顺便说一句,您的“用户”查询中的“ LIMIT 1”是不必要的,该查询将始终返回单个用户。