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 值是什么。 它可能是其他值 - 有时这是简单的错误。