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