Java 我们如何用JPA计算最后一页?
我想在Servlet/EJB/JPA Hibernate项目中实现分页,但我不知道如何从查询中只显示一个页面,并且知道必须显示的页面数 我用Java 我们如何用JPA计算最后一页?,java,hibernate,jpa,Java,Hibernate,Jpa,我想在Servlet/EJB/JPA Hibernate项目中实现分页,但我不知道如何从查询中只显示一个页面,并且知道必须显示的页面数 我用 setFirstResult(int first) ; setMaxResults(int max) ; 这很好,但是我怎么知道我总共有多少页呢 (Hibernate是我的JPA提供程序,但如果可能的话,我更喜欢只使用JPA) 更新:COUNT()似乎是更好/最简单的解决方案; 但是与之相比,SELECT COUNT(*)FROM…的成本是多少 exec
setFirstResult(int first) ;
setMaxResults(int max) ;
这很好,但是我怎么知道我总共有多少页呢
(Hibernate是我的JPA提供程序,但如果可能的话,我更喜欢只使用JPA)
更新:COUNT()似乎是更好/最简单的解决方案;
但是与之相比,SELECT COUNT(*)FROM…
的成本是多少
executeQuery(“SELECT*FROM….getListResult().size()
?好的,您需要(1)计数或(2)检索完整的命中列表并在内存中分页。页数是总计数/页面大小的四舍五入
计数有几种方法,一种是使用count(*)
如
Query query=em.createQuery("SELECT COUNT
(emp.empName) FROM Employee emp");
或者另一种方法是使用投影
criteria.setProjection(Projections.rowCount());
int rowCount = (Integer) criteria.list().get(0);
注意,我从来没有用过这个,我只是在某个地方读过
我在回答中记录了一些关于分页的其他细节: