我正在对存储库层中的分页进行编程。函数将spring的可分页对象和一些值作为参数接收:
public Page<Foo> filterFoo(Pageable pageable, String value) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Foo> fooQuery = cb.createQuery(Foo.class);
Root<Foo> foo = fooQuery .from(Foo.class);
fooQuery .where(adding predicate for match value);
List<Foo> result = entityManager.createQuery(fooQuery )
.setFirstResult((pageable.getPageNumber() - 1) * pageable.getPageSize())
.setMaxResults(pageable.getPageSize())
.getResultList();
return new PageImpl<>(result, pageable, xxxx);
}
函数返回弹簧的PageImpl对象充满了我的结果。对于PageImpl,我还需要设置适合谓词的对象总数。当然,此计数必须没有maxResult和firstResult。是否可以使用fooQuery创建另一个数据库调用来获取该查询的数据库记录总数而没有限制?在JPA中使用可分页和标准api的最佳实践是什么?谢谢你的建议。