Spring 数据休眠 + 可分页:Returns 空结果
Spring Data Hibernate + Pageable: Returns empty results
我正在使用 Spring 数据存储库,没有任何问题。
当我尝试添加 Paging(使用 Pageable 接口)时,它工作正常。
但是,当返回的结果集小于页面大小时,结果为空列表。
以下是我的PageRequest。 index 和 objectsPerPage 的默认值分别为 0 和 10。
new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders))
当它与 returns 少于 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
class 中,使 select count...
如果计数小于偏移量,returns 为空列表。
根据PageRequest
实施:
public int getOffset() {
return page * size;
}
因此,如果您将 page
设置为 0
,则 offset
值也必须为 0
,并且不能大于 total
(如果 total > 0
).
检查(也许在调试器中)您传递给 spring-data 的 pageIndex
值是什么。
它可能是其他值 - 有时这是简单的错误。
我正在使用 Spring 数据存储库,没有任何问题。 当我尝试添加 Paging(使用 Pageable 接口)时,它工作正常。
但是,当返回的结果集小于页面大小时,结果为空列表。
以下是我的PageRequest。 index 和 objectsPerPage 的默认值分别为 0 和 10。
new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders))
当它与 returns 少于 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
class 中,使 select count...
如果计数小于偏移量,returns 为空列表。
根据PageRequest
实施:
public int getOffset() {
return page * size;
}
因此,如果您将 page
设置为 0
,则 offset
值也必须为 0
,并且不能大于 total
(如果 total > 0
).
检查(也许在调试器中)您传递给 spring-data 的 pageIndex
值是什么。
它可能是其他值 - 有时这是简单的错误。