Я использую хранилища Spring Data без проблем. Когда я попытался добавить пейджинг (используя интерфейс Pageable), он работал нормально.Spring Hibernate + Pageable: возвращает пустые результаты
Однако, когда возвращаемый результирующий набор меньше размера страницы, результатом является пустой список.
Ниже приведено мое PageRequest. Значения по умолчанию для индекса и объектовPerPage равны 0 и 10 соответственно.
new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders))
При использовании его с запросом, который возвращает менее 10 результатов, результирующий список пуст.
Это, как я использую хранилище в слое службы:
repository.findAll(MySpecification.searchClients(criteria),
myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null))
.getContent();
EDIT 1 я нашел причину этого, однако я до сих пор ищу решение или обходной путь.
Long total = QueryUtils.executeCountQuery(getCountQuery(spec));
List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList();
Этот код, расположенный в SimpleJpaRepository
класса делает select count...
и если число меньше, то смещение, возвращает пустой список.
спасибо. Проблема заключалась в том, что параметр Query из моих служб REST был 'page = 1', и я забыл, что страницы основаны на 0, но мой API - нет. –