我在Spring MongoRepository上有一个简单的分页请求,但MongoRepository显然在任意高页#后开始发送错误的结果。我在这里发帖是为了知道我是否遗漏了某些内容,或者这可能是Spring MongoRepository的错误。
在我的测试中,我的测试mongo db中有14个元素,下面的分页请求工作正常(如果有的话,检索数据):
pageSize: 10, page#: 0 to 1073741823
但是下面的页面请求会从我的mongoDB中返回10个实体,这是我不期望的:
pageSize: 10, page#: 1073741824
对于pageSize的diff组合,断点是diff。如果需要可以分享。
我正在使用的库下面:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.5.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.12.5</version>
</dependency>
存储库定义:
public interface SomeEntityRepository extends MongoRepository<SomeEntity, Integer> {
}
使用此存储库如下:
public Page<SomeEntity> getSomeEntitiesByPage(int pageIndex, int paseSize, Map<String, Sort.Direction> sortQuery) {
Pageable pageableRequest = new PageRequest(pageIndex, pageSize);
return someEntityRepository.findAll(pageableRequest);
}
答案 0 :(得分:0)
这是Spring MongoRepository的一个问题,Jira已经提交了相同的文件。 MongoRepository尝试获取所需的偏移量Pageable.getOffset()
,返回类型为int,当pageNumber*pageSize > Integer.MaxValue
它被作为负偏移量包围时,导致第一页被检索。可以找到Jira参考here