MongoRepository分页请求返回不正确的数据

时间:2015-05-19 03:32:14

标签: spring mongodb pagination spring-data-mongodb mongorepository

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

}

1 个答案:

答案 0 :(得分:0)

这是Spring MongoRepository的一个问题,Jira已经提交了相同的文件。 MongoRepository尝试获取所需的偏移量Pageable.getOffset(),返回类型为int,当pageNumber*pageSize > Integer.MaxValue它被作为负偏移量包围时,导致第一页被检索。可以找到Jira参考here