@Query
アノテーションと仕様の両方を1つのリポジトリメソッドで使用することは可能ですか?たとえば、次のようなメソッドが必要です。
@Query(value="SELECT e from EMPLOYEE where firstName <> ?1")
public Page<Employee> findEmployeeBySomethigFancy(String firstName, Pageable pageable, Specification<Employee> emp);
クエリ全体をPredicate
として作成し、@Query
アノテーションを削除することは可能ですか?
まずこれを読みたいかもしれません ブログ投稿 最初に。次に、リポジトリが実装する必要がある JpaSpecificationExecutor
インターフェースに従って、仕様を使用して次のクエリを実行できます。
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)
だからあなたは混合する必要はありません@Query
(またはquery-methods)およびSpecification
s。
この状態を表すことができます:
firstName <> ?1
代わりにSpecification
を使用します。その後、必要な数の仕様を組み合わせることができます。