Bonjour,

je suis à la recherche de bons tutos pour m'aider à contruire des requêtes JPQL si qqun a cela sous la main....

Car j'ai des requêtes qui me laissent perplexes. Voici mon contexte si qqun a une idée :

J'ai une table A, B et C. A et B sont liées par une table de jointure car relation ManyToMany. C et B sont liées par une relation OneToMany.

Cela se traduit donc par 3 entités de ce style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
@Entity
public class aObj {
private Set<bObj> bList = new HashSet<bObj>(0);
}
 
@Entity
public class bObj {
private Set<aObj> aList = new HashSet<aObj>(0);
private cObj c;
}
 
@Entity
public class cObj {
private Set<bObj> bList = new HashSet<bObj>(0);
}
Je voudrais donc récupérer la liste des objets A pour un type C donné à condition qu'ils existent des objets B définis pour A.

J'avais donc commencé à écrire une requête JPQL de ce style :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT a FROM aObj a LEFT JOIN a.bList b WHERE b.....
Mais voilà, je ne sais pas comment gérer la 2ème jointure.

Si qqun a une idée je suis preneur.

PS : désolé pas évident d'expliquer un schéma textuellement.

PS2: mon pb est encore plus complexe car j'ai d'autres liens (qui sont un peu circulaires parfois) qui pourraient peut être utile à des roxxors des JPQL.
J'explique ici la suite, à vous de me dire si cela peut être utile.

J'ai une table D. A, C et D sont liées par une table de jointures E (3 clés étrangères). Au vu de cette jointure, j'ai été obligé de faire une entité sur la table de jointures.

Donc pour récupérer mon résultat, je pense qu'il est plus simple de lister A en passant par B liée à C que de passer par E, C et vérifier que des éléments existent dans B pour l'objet A.

Par avance merci.