1
12
您可以使用query.setmaxresults(int results)和query.setfirstresult(int offset)。 编辑:没有办法知道你会得到多少结果。因此,首先必须使用“select count(*)…”进行查询。有点难看。 |
2
7
您必须执行单独的查询以获得最大结果……如果在第一次的时间A之间,客户机在发出另一个请求时向时间B发出分页请求,如果添加了新记录或某些记录现在符合条件,则必须再次查询最大值以反映这一点。我通常在HQL中这样做
对于
|
3
1
您可以执行两个查询——一个count(*)类型的查询,如果您不将太多的表连接在一起,它应该是便宜的;另一个查询设置了限制。然后你知道有多少个项目存在,但只抓取被查看的项目。 |
4
0
您可以将maxresults设置为希望返回的最大行数。将该值设置为大于可用的实际行数没有任何危害。其他解决方案的问题是,它们假定记录的顺序在每次重复查询时都保持不变,并且命令之间不会发生更改。 为了避免这种情况,如果您真的想滚动浏览结果,最好使用可滚动的结果。不要在分页之间丢弃这个对象,而是使用它来保持记录的顺序不变。要从可滚动结果中找出记录数,只需移动到最后一个()位置,然后获取行号。记住在这个值上加1,因为行数从0开始计数。 |
5
-2
我个人认为您应该在前端处理分页。我知道这不是那么有效,但至少它不容易出错。 如果您要使用count(*)事件,那么如果在某个页面的请求之间从表中删除记录,会发生什么情况?很多事情都会这样出错。 |