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. Это может быть и другая ценность-иногда это просто ошибка.