如何限制从数据库中检索的结果数量?
select e from Entity e /* I need only 10 results for instance */
答案 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 = 限制