57

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

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

4 回答 4

70

您可以尝试这样给出 10 个结果以显式获取。

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

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

于 2010-08-16T16:43:51.083 回答
20

您也可以使用 setFirstResult() 设置偏移量

em.createNamedQuery("Entity.list")
  .setFirstResult(startPosition)
  .setMaxResults(length);
于 2012-06-11T10:09:21.413 回答
2

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

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

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

于 2021-04-09T14:02:43.373 回答
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 = 限制

于 2021-06-15T14:21:41.307 回答