Возможно, мне будет проще реализовать с помощью спецификации, но я не знаю, потому что я немного не уверен, что вам на самом деле нужно.В любом случае, посмотрите следующий репозиторий, спецификацию на нем и, в частности, какие интерфейсы он реализует:
public interface SomeEntityRepository extends Repository<SomeEntity, Long>,
PagingAndSortingRepository<SomeEntity, Long>, JpaSpecificationExecutor<SomeEntity> {
@SuppressWarnings("serial")
public static Specification<SomeEntity> findByCountryIdSpecification(Long countryId) {
return new Specification<SomeEntity>() {
@Override
public Predicate toPredicate(Root<SomeEntity> root, CriteriaQuery<?> query,
CriteriaBuilder criteriaBuilder) {
// implement query logic with "countryId" here
return null;
}
};
}
// there will be a method like below with JpaSpecificationExecutor
// Page<SomeEntity> findAll(Specification<SomeEntity> specification, Pageable pageable);
}
При правильно разработанной спецификации использование pageable легко:
repo.findAll(SomeEntityRepository.findByCountryIdSpecification(countryId), pageable);