我有一个查询,我想限制结果集的大小。由于JPA不支持'LIMIT',我一直试图找出正确的方法。我试过了:
@Query("SELECT w FROM WardTransaction w WHERE w.visit = :visit ORDER BY w.admissionDateTime DESC").setMaxResults(1)
public WardTransaction findCurrent(@Param("visit") Visit visit);
哪个不对。我正在寻找关于正确语法的一些指导。
我的存储库代码是:
答案 0 :(得分:3)
@Query("SELECT w FROM WardTransaction w WHERE w.visit = :visit ORDER BY w.admissionDateTime DESC")
以上是查询方法定义,对于查询中的setMaxResult,您需要使用Pageable对象,如下所示。
@Query("SELECT w FROM WardTransaction w WHERE w.visit = :visit ORDER BY w.admissionDateTime DESC")
public void List<Entities> findAll(Pageable pageable)
JPA存储库必须实现SimpleJpaRepository
按照以下方式设置Pageable对象&gt;
Pageable pageSpecification = PageRequest(int page, int size)
Pageable和SimpleJpaRepository的组合是解决方案。
看看here
如果您使用的是EntityManager和NamedQueries,则有一个方法setMaxResult适用于Query对象,但它是一个不同的故事。