次のように、find MyEntity where field in fieldValues
クエリでspring PagingAndSortingRepository
を使用しようとしています。
@Repository
public interface MyEntity extends PagingAndSortingRepository<MyEntity, String> {
List<MyEntity> findByMyField(Set<String> myField);
}
しかし、成功していません。
上記の関数は、フィールド値の1つに一致するフィールドを持つすべてのエンティティを返すことを期待していましたが、空の結果のみを返します。
それはかなり単純な能力のように見えますが、 docs でそれに対する参照を見つけることができませんでした。
/どうすれば達成できますか?
ありがとう。
エンティティ内の特定のフィールドを検索していて、そのコレクションの少なくとも1つのエントリに一致するすべてのフィールドのリストを返したい場合、これは実際に可能です。ドキュメント here は、キーワードIn
を使用してこれを達成できると述べています。例:findByAgeIn(Collection<Age> ages)
で、… where x.age in ?1
と同等です
あなたの投稿から、これがあなたが後のユースケースであるかどうか100%確信していませんが、これを試してみてください。特定のフィールドを検索する必要があるため、「フィールド」を検索対象のフィールドに置き換えます。複数のフィールドで検索している場合、結果をOr
キーワードで連結し、複数のフィールドをそのように指定できる場合があります。
@Repository
public interface MyEntity extends PagingAndSortingRepository<MyEntity, String> {
List<MyEntity> findByFieldIn(Set<String> myField);
}
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
メソッド名はfindByMyFieldIn
でなければならないので、where ... in (..)
クエリを取得するには、最後にIn
を追加する必要があります。