如何在JPA Specification中限制查询仅返回第一条数据(类似SQL的limit 1)
JPA Specification实现Limit 1效果
要实现仅返回第一条数据的Specification,你可以直接在lambda内部操作传入的query对象,调用它的setMaxResults(1)方法,这就等价于SQL里的limit 1。
完整代码如下:
public static Specification<Foo> one() { return (root, query, criteriaBuilder) -> { // 设置仅返回1条数据 query.setMaxResults(1); // 无额外过滤条件时,返回conjunction()表示不对结果做限制 return criteriaBuilder.conjunction(); }; }
说明
query.setMaxResults(1):核心操作,直接限制查询返回的最大条数为1,和TypedQuery的setMaxResults效果完全一致。criteriaBuilder.conjunction():当不需要额外查询过滤条件时,返回这个方法生成的表达式,它代表一个永远为真的条件,不会对查询结果做额外筛选。- 如果需要结合其他查询条件,只需把
conjunction()替换成对应的条件表达式即可,同时保留query.setMaxResults(1)的设置。
内容的提问来源于stack exchange,提问作者Thibault Vandamme
相关产品推荐
相关产品推荐

