Spring Data Hibernate + Pageable:返回空结果

时间:2015-05-27 13:19:21

标签: java spring hibernate spring-data

我正在使用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...如果计数小于偏移量,则返回一个空列表。

1 个答案:

答案 0 :(得分:3)

根据PageRequest实施情况:

public int getOffset() {
    return page * size;
}

因此,如果您将page设置为0,则offset值也必须为0且不能大于total(如果total > 0 )。

检查(可能在调试器中)您传递给spring-data的pageIndex值。 它可能是其他价值 - 有时这是一个简单的错误。