Я вижу, что поведение 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