如何限制从数据库中检索的结果数量?
select e from Entity e /* I need only 10 results for instance */
您可以尝试这样给出 10 个结果以显式获取。
entityManager.createQuery(JPQL_QUERY)
.setParameter(arg0, arg1)
.setMaxResults(10)
.getResultList();
如果后端支持,它将在后端自动创建本地查询以检索特定数量的结果,否则在获取所有结果后在内存中进行限制。
您也可以使用 setFirstResult() 设置偏移量
em.createNamedQuery("Entity.list")
.setFirstResult(startPosition)
.setMaxResults(length);
如果您使用 Spring data JPA,那么您可以使用 Pageable/PageRequest 将记录限制为 1 或您想要的任何数字。第一个参数是页码,第二个参数是记录数。
Pageable page = PageRequest.of(0, 1);
Entity e = entityRepository.findAll(page);
确保 entityRepostitory 接口扩展了 JpaRepository(它支持排序和分页)。
进口
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 = 限制