Как применить критерии поиска (спецификацию) к пользовательским методам репозитория jpa? - PullRequest
0 голосов
/ 26 марта 2019

Как я могу применить спецификацию поиска к методам репозитория?

вот мой код

@Repository
public interface JourneyRepository extends JpaRepository<Journey, Long>, JpaSpecificationExecutor<Journey> {

    Page<Journey> findAllByDriverId(Long id, Pageable pageable);
}

Я хочу применить спецификацию критериев поиска к findAllByDriverId

Ответы [ 3 ]

0 голосов
/ 26 марта 2019

Да, вы можете использовать аннотацию @Query над методом в репозитории, например:

@Query(value="select * from Journey where [name of the field] = ?1",
       countQuery = "SELECT count(*) FROM Journey WHERE [name of the field] = ?1",
       nativeQuery = true)
Page<Journey> findAllByDriverId(Long id, Pageable pageable);
0 голосов
/ 26 марта 2019

Вы можете использовать для вашего случая критерии JPA с пружинными данными JPA, посмотрите на ссылку ниже, она даст вам то, что вы ищете:

полное описание

0 голосов
/ 26 марта 2019

шаблон findByType предоставляется пружинными данными jpa .JpaSpecificationExecutor Поддерживает только нижний интерфейс.Если вы хотите найтиAllByDriverId, просто используйте данные весны jpa.

public interface JpaSpecificationExecutor<T> { 
     T findOne(Specification<T> spec); 
     List<T> findAll(Specification<T> spec); 
     Page<T> findAll(Specification<T> spec, Pageable pageable); 
     List<T> findAll(Specification<T> spec, Sort sort); 
     long count(Specification<T> spec); 
}

Я думаю, вам не нужен JpaSpecificationExecutor, и я думаю, DriverId находится в Journey?Затем включите spring-boot-starter-data-jpa

public interface JourneyRepository extends JpaRepository<Journey, Long> {

   Page<Journey> findAllByDriverId(Long id, Pageable pageable);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...