0

我对 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);

}
4

1 回答 1

0

这是 Spring MongoRepository 的一个问题,Jira 已为此提交。MongoRepository 试图获取Pageable.getOffset()返回类型为 int 的所需偏移量,当pageNumber*pageSize > Integer.MaxValue它被环绕为负偏移量时,会导致检索第一页。可以在此处找到 Jira 参考

于 2015-05-27T22:47:33.213 回答