Bonjour,
Je suis en train de découvrir Hibernate.
Pour celà, j'ai créé un petit cas : j'ai trois tables sous MySQL
- PERSONNE (IDENTPERS, NOMPERS),
- GROUPE (IDENTGROUP, NOMGROUPE),
- COMPOSGR (IDENTGROUP, IDENTPERS, ROLE).
Pb => comment récupérer le rôle sans passer par une requête Query ?
Entites
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 @Entity @Table(name = "PERSONNE") public class Personne implements Serializable, Comparable<Personne> { private static final long serialVersionUID = 3743689093556981957L; /** l'identifiant */ @Id @Column(name = "IDENTPERS", nullable = false, length = 4) protected String ident = ""; /** le nom */ @Column(name = "NOMPERS", unique=true, nullable = false, length = 30) protected String nom = ""; // relation Personne (one) -> Composition (many) @OneToMany(mappedBy = "personne", cascade = { CascadeType.REMOVE } ) protected Set<Composition> listeGroupe = new HashSet<Composition>(); public Personne() { } public String getIdent() { return ident; } public void setIdent(String ident) { this.ident = ident; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public Set<Composition> getlisteGroupe() { return listeGroupe; } public void setListeGroupe(Set<Composition> listeGroupe) { this.listeGroupe = listeGroupe; } }
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 @Entity @Table(name = "GROUPE") public class Groupe implements Serializable { private static final long serialVersionUID = 4960895813795673977L; /** l'identifiant */ @Id @Column(name = "IDENTGROUP", nullable = false, length = 3) protected String ident = ""; /** le titre */ @Column(name = "NOMGROUPE", unique=true, nullable = false, length = 30) protected String titre = ""; /** les personnes */ // relation Groupe (one) -> Personne (many) @OneToMany(mappedBy = "groupe", cascade = { CascadeType.REMOVE } ) protected List<Composition> listePersonne = new ArrayList<Composition>(); public Groupe() { } public String getIdent() { return ident; } public void setIdent(String ident) { this.ident = ident; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public List<Composition> getListePersonne() { return listePersonne; } public void setListePersonne(List<Composition> listePersonne) { this.listePersonne = listePersonne; } }
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 @Entity @Table(name = "COMPOSGR") public class Composition implements Serializable { private static final long serialVersionUID = 4428535212320342621L; @Embeddable public static class Id implements Serializable { private static final long serialVersionUID = 8057271362402253716L; /** la personne */ @Column(name = "IDENTPERS", nullable = false, length = 4) private String identPers = ""; /** le groupe */ @Column(name = "IDENTGROUPE", nullable = false, length = 3) private String identGroupe = ""; public Id() { } public String getIdentPers() { return identPers; } public void setIdentPers(String identPers) { this.identPers = identPers; } public String getIdentGroupe() { return identGroupe; } public void setIdentGroupe(String identGroupe) { this.identGroupe = identGroupe; } } @EmbeddedId private Id id = new Id(); @ManyToOne() @JoinColumn(name= "IDENTPERS", insertable = false, updatable = false) private Personne personne = new Personne(); @ManyToOne() @JoinColumn(name= "IDENTGROUPE", insertable = false, updatable = false) private Groupe groupe = new Groupe(); @Column(name = "ROLE", nullable = true, length = 30) private String role = ""; public Composition() { } public Composition(Personne personne, Groupe groupe) { getId().setIdentPers(personne.getIdent()); getId().setIdentGroupe(groupe.getIdent()); setPersonne(personne); setGroupe(groupe); personne.getListeGroupe().add(this); groupe.getListePersonne().add(this); } public String getIdentPers() { return getId().getIdentPers(); } public void setIdentPers(String identPers) { getId().setIdentPers(identPers); } public String getIdentGroupe() { return getId().getIdentGroupe(); } public void setIdentGroupe(String identGroupe) { getId().setIdentGroupe(identGroupe); } public Id getId() { return id; } public void setId(Id id) { this.id = id; } public Personne getPersonne() { return personne; } public void setPersonne(Personne personne) { this.personne = personne; } public Groupe getSGroupe() { return Groupe; } public void setGroupe(Groupe Groupe) { this.Groupe = Groupe; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } }
le DAO
Le rôle est systématiquement à blancs
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
17
18
19
20 .... public void getListeGroupe(Personne personne) throws Exception { EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); Personne newPers = em.find(Personne.class, personne.getIdent()); for(Composition compos : newPers.getListeGroupe()) { Groupe groupe = compos.getGroupe(); System.out.println("Code : " + groupe.getIdent()); System.out.println("Nom : " + groupe.getNom()); System.out.println("Role : " + compos.getRole()); } em.close(); }
Merci d'avance pour vos réponses.
Partager