限制JPQL中的结果数量

时间:2010-08-13 17:03:48

标签: java jpa jpql

如何限制从数据库中检索的结果数量?

select e from Entity e /* I need only 10 results for instance */

4 个答案:

答案 0 :(得分:64)

您可以尝试这样做,明确提取10个结果。

entityManager.createQuery(JPQL_QUERY)
             .setParameter(arg0, arg1)
             .setMaxResults(10)
             .getResultList();

如果后端支持,它将自动在后端创建本机查询以检索特定数量的结果,否则在获得所有结果后在内存中执行限制。

答案 1 :(得分:20)

您也可以使用setFirstResult()

设置偏移量
    em.createNamedQuery("Entity.list")
      .setFirstResult(startPosition)
      .setMaxResults(length);

答案 2 :(得分:2)

如果您使用的是 Spring 数据 JPA,那么您可以使用 Pageable/PageRequest 将记录限制为 1 或您想要的任何数字。第一个参数是页码,第二个参数是记录数。

Pageable page = PageRequest.of(0, 1);
Entity e = entityRepository.findAll(page);

确保 entityRepostitory 接口扩展了 JpaRepository(支持排序和分页)。

答案 3 :(得分:0)

导入

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

存储库

@Query(value = "select * from table");
public Page<Dto> limited(Pageable pageable);

服务

Page<Dto> returnValue= repo.limited(PageRequest.of(0, 1));
return returnValue.getContent();

尝试使用和不使用 getContent(); ??
PageRequest.of(0, X) X = 限制