Java 在Spring Boot中获取错误的页数

Java 在Spring Boot中获取错误的页数,java,spring-boot,paging,Java,Spring Boot,Paging,我正在用弹簧靴做寻呼。我的名单上有32张唱片。我正在尝试以5页大小的页面获取这些列表。当我检查从0到3的页面时,我得到了正确的元素总数(每页5个)。但是当我检查最后一页时,它在列表中给了我少一个元素(最后一页上有1个元素,但它应该返回2个),并且元素总数减少了一个 @Query(value = "SELECT DISTINCT s FROM Students s JOIN FETCH s.Teachers WHERE s.Teachers IN (:Teachers)", c

我正在用弹簧靴做寻呼。我的名单上有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);
@Query(value=“从学生中选择不同的s加入获取s.教师,其中s.教师在(:教师)”,countQuery=“从学生中选择不同的s”+
“美国教师在哪里(:教师)”)
pagefindbystd(@Param(“教师”)列表教师,可分页;
选择不同的s
从学生到教师
美国教师在哪里(:教师)
选择计数(不同的)
来自学生的
美国教师在哪里(:教师)
让我看看

FROM Students s JOIN Teachers
不同于

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

因此,页码是错误的。

要么是您的查询输入错误,要么就是根本不正确。在查询中,您指的是
b
,而在计数中,您指的是
s
。还有,为什么要提供这两个查询?为什么不简单地使用
findByTeachersIn(列表教师,可分页)
。Spring数据将不会为您创建这两个查询。另外,请确保您确实设置了正确的页面大小(在您要传递的
Pageable
中,您的默认页面大小仍然是10)。@M.Deinum更新的查询。此外,如果将分页与联接获取一起使用,则必须提到countQuery。请检查联接获取查询和计数查询记录的计数是否相同。@SaiYeYanNaingAye我们不能在计数查询中使用联接获取。在这种情况下我该怎么办?@Abhishek我的意思是请检查第一个查询,给出多少条记录。第二个计数查询给出了记录的数量。我怀疑这两个查询不是相同的,因为这两个查询是相似的。也许
countQuery=从学生s中选择count(不同的s),其中s.教师在(:教师)”
您应该自己测试,因为我没有数据库。