MongoRepository 分页请求返回错误数据
MongoRepository paging request returning incorrect data
我在 Spring MongoRepository 上有一个简单的分页请求,但 MongoRepository 显然在某个任意高页面# 之后开始发送不正确的结果。我在这里发帖是为了知道我是否遗漏了什么或者这可能是 Spring MongoRepository.
的错误
在我的测试中,我的测试中有 14 个元素 mongo db 和以下分页请求工作正常(如果存在则检索数据):
pageSize: 10, page#: 0 to 1073741823
但是在页面下方请求 returns 我的 mongo 数据库中的 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);
}
这是 Spring MongoRepository 的一个问题,Jira 已针对该问题提交。 MongoRepository 正在尝试获取所需的偏移量 Pageable.getOffset()
,return 类型为 int,当 pageNumber*pageSize > Integer.MaxValue
时,它会作为负偏移量环绕,从而导致检索到第一页。可以在 here
中找到关于此的 Jira 参考
我在 Spring MongoRepository 上有一个简单的分页请求,但 MongoRepository 显然在某个任意高页面# 之后开始发送不正确的结果。我在这里发帖是为了知道我是否遗漏了什么或者这可能是 Spring MongoRepository.
的错误在我的测试中,我的测试中有 14 个元素 mongo db 和以下分页请求工作正常(如果存在则检索数据):
pageSize: 10, page#: 0 to 1073741823
但是在页面下方请求 returns 我的 mongo 数据库中的 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);
}
这是 Spring MongoRepository 的一个问题,Jira 已针对该问题提交。 MongoRepository 正在尝试获取所需的偏移量 Pageable.getOffset()
,return 类型为 int,当 pageNumber*pageSize > Integer.MaxValue
时,它会作为负偏移量环绕,从而导致检索到第一页。可以在 here