首页 > 解决方案 > 在 Spring Boot 中获取错误的页数

问题描述

我在 Spring Boot 中进行分页。我的列表上有 32 条记录。我试图在页面大小为 5 的页面中获取这些列表。当我检查从 0 到 3 的页面时,我得到了正确的总元素(每页 5 个)。但是当我检查最后一页时,它在列表中少了一个元素(最后一页上的 1 个元素,但它应该返回 2),并且元素的总数减少了一个。

@Query(value = "SELECT DISTINCT s FROM Students s JOIN FETCH s.Teachers WHERE s.Teachers IN (:Teachers)", countQuery = "SELECT count(DISTINCT s) FROM Students s" +
             " WHERE s.Teachers IN (:Teachers)")
    Page<Students> findByStd(@Param("Teachers") List<Teacher> Teacher, Pageable pageable);

标签: javaspring-bootpaging

解决方案


SELECT DISTINCT s 
FROM Students s JOIN FETCH s.Teachers 
WHERE s.Teachers IN (:Teachers)
SELECT count(DISTINCT s) 
FROM Students s
WHERE s.Teachers IN (:Teachers)

让我们来看看

FROM Students s JOIN Teachers

FROM Students s WHERE s.Teachers IN (:Teachers)

因此,pageNumber 是错误的。


推荐阅读