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;
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;
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.
La requête JPQL qui me viens intuitivement est :
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
Mais cette requête ne fonctionne évidemment pas. [B]On ne peut pas utiliser un FETCH avec des ALIAS/B].
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.