Rechercher un object dans @ElementCollection

J’utilise Spring Data JPA.

Je suis une entité comme celle-ci

public class A { @CollectionTable(name = "B_ITEMS", joinColumns = @JoinColumn(name = "B_ID")) @ElementCollection private List bs; } 

Et une classe Embedded

 @Embeddable public class B { private Ssortingng prop1 private Ssortingng prop2 private Ssortingng prop3 } 

Comment rechercher l’entité A à l’aide du contenu @ElementCollection B?

Et voici mon référentiel Spring Data JPA Repositry

 public interface ARepo extends PagingAndSortingRepository { } 

Quel nom de méthode de requête est applicable à mon cas d’utilisation?

@ElementCollection n’est qu’un moyen simple de mapper une relation @OneToMany .

En tant que tel, vous pouvez les rejoindre comme d’habitude:

 public interface ARepo extends PagingAndSortingRepository { @Query("select a from A a join a.bs b where b.prop1 = :prop1 and ...") A findByProps(@Param("prop1") Ssortingng prop1) } 

Vous semblez demander une requête IN de base dans Spring Data – findBybsIn(List bs)

Une approche pourrait consister à rechercher dans une liste d’objects A toutes les propriétés d’un object B. Cela signifie utiliser des filtres pour prop1, prop2 et prop3 ensemble.

 public interface ARepo extends PagingAndSortingRepository { List findByBsProp1AndBsProp2AndBsProp3(Ssortingng prop1, Ssortingng prop2, Ssortingng prop3); } 

Au lieu d’utiliser @Query comme dans @Zeromus answer, vous pouvez également le définir par nom de méthode (findByElementCollectionProperty_NestedProperty):

 public interface ARepo extends JPARepository { List findByBs_Prop1(Ssortingng prop1); } 

Vous trouverez plus d’informations sur la résolution des propriétés nestedes dans SpringData sous:

Requête de propriété expressions