【发布时间】:2015-12-04 05:54:20
【问题描述】:
编辑:关于这个问题的第二个和第四个答案提供了这个问题的解决方案setMaxResults for Spring-Data-JPA annotation?
目标:使用 Spring Data JPA 存储库和 Spring Query 注释按属性 z 获取最大/最小元素。
目前为止我所拥有的
@Query("SELECT xelement FROM x xelement ORDER BY xelement.z")
public List<X> findFirstElement();
问题:此查询获取所有元素(这并不是真正有效)。如果我直接使用 EntityManager,我可以使用
设置结果数entityManager.setMaxResults(1)
只获取第一个元素。
问题:如何使用 @Query 注释指定最大结果数?
想法:使用大小为 0 的 PageRequest 是否可行?
约束:我知道“FindFirstBy....”查询功能,但我想/必须使用 @Query 注释。
【问题讨论】:
-
为什么你的方法只返回一个元素时返回
List<X>?如果查询真的那么简单,您可以避免使用@Query,而只需使用findFirstOrderByZ()。否则,您将不得不使用LIMIT关键字来限制返回的记录数SELECT x FROM xelement x ORDER BY x.z LIMIT 1。 -
@manish: 1. 关于 List
,这只是为了足够灵活,以防我切换任意数量的项目,但是是的,原则上你是正确的,返回一个列表在这种情况下是矫枉过正的。 2.关于“findFirst..” --> 见约束。 3. 你确定 JPQL 中有 limit 关键字吗?我想我必须检查一下......我还找到了stackoverflow.com/questions/9314078/…,它几乎解决了这个问题。 -
发现这被 [stackoverflow.com/questions/9314078/… [1] 中的第二个和第四个答案所涵盖:stackoverflow.com/questions/9314078/…
-
请不要按列表中的顺序引用答案。 此顺序更改。请直接链接到答案。
标签: java spring spring-data-jpa jpql