代码之家  ›  专栏  ›  技术社区  ›  Alexxxx

Java 11-Springboot JPA-带偏移的分页

  •  0
  • Alexxxx  · 技术社区  · 2 年前

    在我的springboot 2.7.14项目中,我需要执行一个带有投影、规范和分页的查询。 我已经尝试过库“带投影的规范”,但它似乎不适合我的情况,因为查询仍在检索所有列,并且只有在检索完之后才映射我的投影。 所以我最终使用了CriteriaQuery。 前端将查询参数、pageNumber(以1为基数)、pageSize和偏移量传递给后端。 如何将所有这些信息放在一起以执行查询和返回Page对象? 这是我执行查询的说明:

    List<MyDto> myDtoList= entityManager.createQuery(criteriaQuery)
                    .setFirstResult(((pageNumber - 1) * pageSize) + offset)
                    .setMaxResults(pageSize)
                    .getResultList();
    

    之后,我进行“选择计数”以获得总数,并最终返回所有信息和此指令:

    return new PageImpl<>(myDtoList, PageRequest.of(pageNumber - 1, pageSize), totalElements);
    

    以这种方式返回的Page对象不包括正确的偏移量,而只包括操作pageNumber*pageSize中的偏移量。 我很确定问题出在PageRequest.of的实现中,所以我在这个答案中找到了这个类OffsetBasedPageRequest: Pagination in Spring Data JPA (limit and offset) 不幸的是,这个特定的解决方案似乎不适用于最新版本的Springboot。 最近有人尝试过这样做吗?请帮助我正确实现OffsetBasedPageRequest?

    0 回复  |  直到 2 年前