web-dev-qa-db-fra.com

Requête plusieurs-à-plusieurs jpql

J'ai le problème suivi.

Il existe un distributeur d'entité qui est connecté à la relation ManyToMany avec la ville de l'entité:

@Entity
public class Distributor{

   @ManyToMany
   @JoinTable( name = "GS_DISTRIBUTOR_TOWN",
           joinColumns = @JoinColumn(name = "CD_DISTRIBUTOR"),
           inverseJoinColumns = @JoinColumn(name = "CD_TOWN") )
   private List<Town> towns;

   ....
}

Ensuite, la ville de l'entité est également en relation avec le district

@Entity
public class Town{

   @ManyToMany(mappedBy="towns")
   private List<Distributor> distributors;

   @ManyToOne
   private District district;

   ....
}

Maintenant, je dois filtrer (avec jpql) tous les distributeurs qui sont dans un district. Comment puis-je faire?

21
Skizzo
select distinct distributor 
from Distributor distributor  
join distributor.towns town 
join town.district district 
where district.name = :name

Voir: https://en.wikibooks.org/wiki/Java_Persistence/JPQL

39
James