Bonjour,
j'ai décidé d'effectuer des jointures explicite dans mes requêtes JPQL comme l'exemple suivant :
pour le graphe d'objet suivant,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class DocVentes implements Serializable { @Id @Column(name = "id") private Long id; @JoinColumn(name = "entete_doc", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private EnteteDocVente enteteDoc; @JoinColumn(name = "client", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Clients client;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class EnteteDocVente implements Serializable { @Id @Column(name = "id") private Long id; @JoinColumn(name = "creneau", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private CreneauHoraireUsers creneau;J'aimerais récupérer la liste des documents de vente, avec le vendeur. On atteint le vendeur depuis le document de vente en passant par EnteteDocVente puis par CreneauHoraireUsers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class CreneauHoraireUsers implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "id") private Long id; @JoinColumn(name = "users", referencedColumnName = "id") @ManyToOne(fetch = FetchType.LAZY) private Users users;
La requête JPQL qui me viens intuitivement est :
Mais cette requête ne fonctionne évidemment pas. [B]On ne peut pas utiliser un FETCH avec des ALIAS/B].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT d FROM DocVentes d JOIN FETCH d.client JOIN FETCH d.enteteDoc E JOIN FETCH E.creneau C JOIN FETCH C.users
Ma question se résume alors à : si on utilise JPA, comment atteindre mon résultat sans laisser le moteur JPA nous générer n requêtes lorsqu’on aura besoin de connaitre le vendeur ayant établi une facture ?
Merci.
Partager