我们如何使用JPA计算最后一页?

时间:2010-06-16 12:50:49

标签: java hibernate jpa

我想在我的Servlet / EJB / JPA-Hibernate项目中实现分页,但我无法弄清楚查询中只有一个页面如何知道我必须显示的页面数

我用

setFirstResult(int first) ;
setMaxResults(int max) ;

这项工作正常,但我怎么知道我总共会有多少页呢?

(Hibernate是我的JPA提供商,但如果可能,我更愿意只使用JPA)

更新:COUNT()似乎是更好/最简单的解决方案; 但与SELECT COUNT(*) FROM ...相比,成本是多少呢? executeQuery("SELECT * FROM ...).getListResult().size()

1 个答案:

答案 0 :(得分:4)

AFAIK,您需要(1)计数或(2)检索完整的命中列表并在内存中进行分页。页数是总计数/页面大小的总和。

有几种方法可以计算,一种方法是使用{/ 1}},如

COUNT(*)

或其他人使用投影

Query query=em.createQuery("SELECT COUNT
(emp.empName) FROM Employee emp");

请注意,我从未使用过这个,我只是在某处阅读。

我在这个答案中记录了一些关于分页的其他细节:

希望有所帮助