Bonjour,
Est-il possible de faire une jointure entre une table et une association ayant une PK de type EmbeddedId ?
Voici le contexte :
L'association :
Sa clé primaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @Entity @Table(name = "formesur") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Formesur.findAll", query = "SELECT f FROM Formesur f") , ...) public class Formesur implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected FormesurPK formesurPK; . . .
La table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @Embeddable public class FormesurPK implements Serializable { @Basic(optional = false) @NotNull @Column(name = "id_personnel") private int idPersonnel; @Basic(optional = false) @NotNull @Column(name = "id_module") private int idModule; . . .
La jointure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Entity @Table(name = "module") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Module.findAll", query = "SELECT m FROM Module m") , . . .) public class Module implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id_module") private Integer idModule; . . .
L'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 String req = "select m from Module m join Formesur fs on m.idModule = fs.FormesurPK.idModule"; req += " where m.idFormation=:idFormation and fs.FormesurPK.idPersonnel=:idPersonnel"; Query q = em.createQuery(req); q.setParameter("idFormation", idFormation); q.setParameter("idPersonnel", idPersonnel); return (List<Module>)q.getResultList();
Exception Description: Problem compiling [select m from Module m join Formesur fs on m.idModule = fs.FormesurPK.idModule where m.idFormation=:idFormation and fs.FormesurPK.idPersonnel=:idPersonnel]. The state field path 'fs.FormesurPK.idPersonnel' cannot be resolved to a valid type.
Si quelqu'un a idée, je serais bien preneur car je galère un peu ... beaucoup :-(
Merci d'avance.
Partager