0

Spring MongoRepository を介した単純なページング要求がありますが、MongoRepository は、任意の高いページ番号の後に誤った結果を送信し始めたようです。何か不足しているかどうか、またはこれが Spring MongoRepository のバグであるかどうかを知るためにここに投稿しています。

私のテストでは、テスト mongo db に 14 の要素があり、以下のページング リクエストは正常に動作します (存在する場合はデータを取得します) pageSize: 10, page#: 0 to 1073741823pageSize: 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 に答える