我正在使用Spring Data存储库而没有任何问题。 当我尝试添加Paging(使用Pageable接口)时,它工作正常。
但是,当返回的结果集小于Page size时,结果为空List。
以下是我的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...
如果计数小于偏移量,则返回一个空列表。
答案 0 :(得分:3)
根据PageRequest
实施情况:
public int getOffset() {
return page * size;
}
因此,如果您将page
设置为0
,则offset
值也必须为0
且不能大于total
(如果total > 0
)。
检查(可能在调试器中)您传递给spring-data的pageIndex
值。
它可能是其他价值 - 有时这是一个简单的错误。