Spring Data Hibernate + Pageable: возвращает пустые результаты
я использую хранилища данных Spring без каких-либо проблем. Когда я попытался добавить подкачку (используя интерфейс подкачки), он работал нормально.
однако, когда возвращаемый результирующий набор меньше размера страницы, результатом является пустой список.
ниже приведен мой PageRequest. Значения по умолчанию для index и objectsPerPage равны 0 и 10 соответственно.
new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders))
при использовании его с запросом, который возвращает менее 10 результатов, результирующий список пустой.
вот как я использую репозиторий на уровне сервиса:
repository.findAll(MySpecification.searchClients(criteria),
myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null))
.getContent();
правка 1 Я нашел причину этого, однако я все еще ищу решение или обходной путь.
Long total = QueryUtils.executeCountQuery(getCountQuery(spec));
List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList();
этот код, расположенный в SimpleJpaRepository
класса составляет select count...
и если количество меньше смещения, возвращает пустой список.
1 ответов
по данным PageRequest
реализация:
public int getOffset() {
return page * size;
}
Итак, если вы установите page
to 0
на offset
значение должно быть 0
и не более total
(если total > 0
).
проверить (возможно в отладчике), что pageIndex
значение, которое вы передаете spring-data.
Это может быть и другая ценность-иногда это просто ошибка.