
woytech
Kann man beides verwenden @Query
Annotation und Spezifikation in einer Repository-Methode? Zum Beispiel hätte ich gerne eine Methode wie diese:
@Query(value="SELECT e from EMPLOYEE where firstName <> ?1")
public Page<Employee> findEmployeeBySomethigFancy(String firstName, Pageable pageable, Specification<Employee> emp);
Ist es möglich oder sollte ich die gesamte Abfrage als Predicate
und entfernen Sie die @Query
Anmerkung?

Vlad Mihalcea
Als erstes sollten Sie dies lesen Blogbeitrag zum Frühling.
Zweitens, nach der JpaSpecificationExecutor
Schnittstelle, die Ihre Repositories implementieren sollen, nehmen Sie die folgende Methode ein Specification
Streit:
count(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)
T findOne(Specification<T> spec)
Sie können also nicht a mischen @Query
Definition mit a Specification
.
Da kann man das aber ausdrücken firstName <> ?1
Bedingung mit a Specification
und da Sie beliebig viele Spezifikationen kombinieren können, können Sie das Ganze umschreiben @Query
verwenden Specification
(s) nur.
10142700cookie-checkKann ich eine @Query-Definition mit einer Spezifikation in einer Spring Data JPA-Repository-Methode kombinieren?yes