Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们如何用JPA计算最后一页?_Java_Hibernate_Jpa - Fatal编程技术网

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

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

我想在Servlet/EJB/JPA Hibernate项目中实现分页,但我不知道如何从查询中只显示一个页面,并且知道必须显示的页面数

我用

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);
注意,我从来没有用过这个,我只是在某个地方读过

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

希望有帮助

另请参见以下问题: