我想在我的Servlet / EJB / JPA-Hibernate项目中实现分页,但我无法弄清楚查询中只有一个页面如何知道我必须显示的页数
我用
setFirstResult(int first) ;
setMaxResults(int max) ;
这工作正常,但我怎么知道我总共会有多少页呢?
(Hibernate是我的JPA提供者,但如果可能,我更愿意只使用JPA)
更新:COUNT()似乎是更好/最简单的解决方案;
但是与…相比,SELECT COUNT(*)FROM …的成本是多少?
executeQuery(“SELECT * FROM …).getListResult().size()?
最佳答案
AFAIK,您需要(1)计数或(2)检索完整的命中列表并在内存中进行分页.页数是总计数/页面大小的总和.
原文链接:https://www.f2er.com/java/437683.htmlQuery query=em.createQuery("SELECT COUNT
(emp.empName) FROM Employee emp");
或另一个是使用投影
criteria.setProjection(Projections.rowCount());
int rowCount = (Integer) criteria.list().get(0);
请注意,我从未使用过这个,我只是在某个地方读过它.
我在这个答案中记录了一些关于分页的其他细节:
> client side sorting + hibernate paging
希望它有所帮助