Запрос Springs MongoDB не сбрасывает свою страницу при использовании «unpaged». Ошибка? - PullRequest
0 голосов
/ 28 октября 2019

Я вижу, что поведение count () в запросах изменилось, свойство limit также ограничивает количество. Само по себе это не кажется логичным, но я нашел обходной путь. Или так я думал.

Просто скопируйте запрос и удалите подкачку. При чтении документации по API это должно сработать:

    Query query = new Query(...).with(PageRequest.of(5, 10));

    return PageableExecutionUtils.getPage(myResults, pageable,
            () -> mongoTemplate.count(Query.of(query).with(Pageable.unpaged()), clazz));

Но функция with(...) выглядит некорректно, что продемонстрировано в этом тесте:

    @Test
    public void testQueryPaging() {
        final Query query = new Query(new Criteria());
        Assertions.assertThat(query.getLimit()).isEqualTo(0);
        Assertions.assertThat(query.getSkip()).isEqualTo(0);

        final Pageable pageable = PageRequest.of(5, 10);
        query.with(pageable);
        Assertions.assertThat(query.getLimit()).isEqualTo(10);
        Assertions.assertThat(query.getSkip()).isEqualTo(50);

        query.with(Pageable.unpaged());
        Assertions.assertThat(query.getLimit()).isEqualTo(0);
        Assertions.assertThat(query.getSkip()).isEqualTo(0);
    }

Глядя на код,если unpaged() передается в качестве параметра with(...), он просто возвращает запрос со всеми предыдущими страницами, которые все еще находятся на месте. Я думаю, что установка unpaged приведет к сбросу limit и skip. Похоже, ошибка в коде.

Протестировано на Spring Boot 2.2.0-RELEASE

...