gpt4 book ai didi

java - Spring Data Hibernate + 可分页 : Returns empty results

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:31 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com