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 只宠物吗?还是某个类型的用户和他的所有宠物?
谢谢
解决方案
如果 Pets 中的 Id 字段是自动递增的,那么这个查询应该会给你你正在寻找的结果:
@Query("SELECT * FROM pets WHERE ownerId = :userId ORDER BY Id DESC LIMIT 10")
顺便说一句,您的用户查询中的“LIMIT 1”是不必要的,查询将始终返回一个用户。
推荐阅读
- mule - Mulesoft dataweave:如何通过包含标头将 xlsx 文件转换为 JSON?
- python - json.decoder.JSONDecodeError: Expecting value: , json.decoder.JSONDecodeError: Expecting property name 括在双引号中:
- javascript - 存储更改不会重新渲染组件中的计算函数
- rest - 带有类别的 REST API 设计
- adview - Android - 双击发布商广告查看错误
- ios - 将视图控制器的代码移动到演示者如何更容易在 VIPER 中进行单元测试?
- angular - 在 Angular6 中更新元标记不起作用(查看页面源代码)
- git - 两个标签之间的Git汇总统计
- firebase - 我必须从 Firebase 下载图像才能显示它吗?
- sql - 这个 SQL 是做什么的?