作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 Spring Data 存储库,没有任何问题。当我尝试添加 Paging(使用 Pageable 接口(interface))时,它工作正常。
但是,当返回的结果集小于页面大小时,结果为空列表。
以下是我的 PageRequest。 index 和 objectsPerPage 的默认值分别为 0 和 10。
new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders))
将它用于返回少于 10 个结果的查询时,结果列表为空。
这是我在服务层使用存储库的方式:
repository.findAll(MySpecification.searchClients(criteria),
myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null))
.getContent();
编辑 1我找到了造成这种情况的原因,但我仍在寻找解决方案或解决方法。
Long total = QueryUtils.executeCountQuery(getCountQuery(spec));
List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList();
此代码位于 SimpleJpaRepository
类中,使 select count...
如果计数小于偏移量,则返回一个空列表。
最佳答案
根据PageRequest
实现:
public int getOffset() {
return page * size;
}
因此,如果您将 page
设置为 0
,则 offset
值也必须为 0
,并且不能大于总计
(如果总计 > 0
)。
检查(也许在调试器中)您传递给 spring-data 的 pageIndex
值是什么。它可能是其他值 - 有时这是简单的错误。
关于java - Spring Data Hibernate + 可分页 : Returns empty results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30483709/
我是一名优秀的程序员,十分优秀!