Я получил ответ на JIRA-Issue от Дирка Луйка (Thx Dirk :))
https://jira.spring.io/browse/DATAJDBC-554?filter=-3
interface FooRepository extends PagingAndSortingRepository<FooEntity, Long> {
List<FooEntity> findAllByBar(String bar, Pageable pageable);
Long countAllByBar(String bar);
}
И затем объединяем эти 2 запросы вроде этого:
List<FooEntity> fooList = repository.findAllByBar("...", pageable);
Long fooTotalCount = repository.countAllByBar("...");
Page<FooEntity> fooPage = PageableExecutionUtils.getPage(fooList, pageable, () -> fooTotalCount);
"ошибка в вашем обходном пути - ваш собственный запрос. В Spring Data JDB C 2.0 вам не нужно это использовать, за исключением специальных запросов, но они не будут support pageables. "
Можно найти возможные параметры:
https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#jdbc .query-methods
Thx Dirk,
Я также нахожу обходной путь, чтобы запустить его с помощью специального запроса. Просто используйте limit, offset и orderBy в качестве дополнительных параметров, например:
@Query("select * from person where firstname = :name order by :order limit :size offset :offset")
List<Customer> findByFirstNameCustomQuery(@Param("name") String name, Pageable page, @Param("offset") long offset,
@Param("size") long size, @Param("order") String order);
И затем измените вызов внутри службы, например:
List<Customer> custList = customerRepository.findByFirstNameCustomQuery(firstname, pageable, ....