webdevqa.jp.net

Spring Data Repositories-リスト内の検索場所フィールド

次のように、find MyEntity where field in fieldValuesクエリでspring PagingAndSortingRepositoryを使用しようとしています。

@Repository
public interface MyEntity extends PagingAndSortingRepository<MyEntity, String> {

    List<MyEntity> findByMyField(Set<String> myField);

}

しかし、成功していません。

上記の関数は、フィールド値の1つに一致するフィールドを持つすべてのエンティティを返すことを期待していましたが、空の結果のみを返します。

それはかなり単純な能力のように見えますが、 docs でそれに対する参照を見つけることができませんでした。

/どうすれば達成できますか?

ありがとう。

12
Daniel

エンティティ内の特定のフィールドを検索していて、そのコレクションの少なくとも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);

} 
16
www.debug.coach

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/

メソッド名はfindByMyFieldInでなければならないので、where ... in (..)クエリを取得するには、最後にInを追加する必要があります。

4
jvecsei