BOnjour
je développe sous Netbeans +glassfish+hibernate+mysql
J'ai un entity bean suivant:
La classe fille qui en hérite
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 package fr.hh.com.persistence; import fr.hh.com.exception.ValidationException; import java.util.List; import javax.persistence.*; // <editor-fold defaultstate="collapsed" desc=" UML Marker "> // #[regen=yes,id=DCE.D8085F74-D247-A25F-E3A8-5C513049DE80] // </editor-fold> /* classe mère */ @MappedSuperclass public class Clients extends PersonneMorale implements java.io.Serializable{ // <editor-fold defaultstate="collapsed" desc=" UML Marker "> // #[regen=yes,id=DCE.642A4BBF-0209-636E-154F-D9C9B678436E] // </editor-fold> @Column(name="codeClient") private int codeClient=0; @OneToMany(cascade=CascadeType.ALL) private List<Interlocuteurs> interlocuteurs; /******************************** *******Constructor************* ********************************/ public Clients(){super();} public Clients(int codeClient){ super(); setCodeClient(codeClient); } /******************************** *******Methode de verification*** ********************************/ @PrePersist @PreUpdate private void validateData() { if (codeClient == 0 ) throw new ValidationException("Code Client invalide"); } /******************************** *******GETTER and SETTER******** ********************************/ public int getCodeClient() { return codeClient; } public void setCodeClient(int codeClient) { this.codeClient = codeClient; } public List<Interlocuteurs> getInterlocuteurs() { return (List)interlocuteurs; } public void setInterlocuteurs(List<Interlocuteurs> interlocuteurs) { this.interlocuteurs = interlocuteurs; } }
La classe clients possède une liste d'interlocuteurs avec une annotation OneToMany.
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 package fr.hh.com.persistence; import fr.hh.com.exception.ValidationException; import javax.persistence.*; // <editor-fold defaultstate="collapsed" desc=" UML Marker "> // #[regen=yes,id=DCE.279A094E-70B6-3A58-BFF5-DA771E823FD4] // </editor-fold> @Entity @Table(name="interlocuteurs") public class Interlocuteurs extends PersonnePhysique implements java.io.Serializable{ @Column(name="rem") private String rem; /******************************** *******Constructor************* ********************************/ public Interlocuteurs() { super(); } /******************************** *******Methode de verification*** ********************************/ @PrePersist @PreUpdate private void validateData() { if (getNom() == null || "".equals(getNom())) throw new ValidationException("Nom invalide"); } /******************************** *******GETTER and SETTER******** ********************************/ public String getRem() { return rem; } public void setRem(String rem) { this.rem = rem; } }
Dans mon Bean, j'essai de lister les préleveurs par la méthode suivante:
Ca marche bien si je veux accéder au champs normaux. Par contre si je veux accéder à l'attribut getInterlocuteurs qui doit me retourner une Arraylist de type Interlocuteurs, j'obtiens une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public ArrayList<Preleveur> listePreleveur(){ /*on liste les preleveurs*/ List<Preleveur> liste; liste=em.createQuery("Select c from Preleveur c").getResultList(); return (ArrayList<Preleveur>) liste; }
Je pense que c'est du à un probleme de rattachement à mon entitymanager.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 GRAVE: failed to lazily initialize a collection of role: fr.hh.com.persistence.Preleveur.interlocuteurs, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.hh.com.persistence.Preleveur.interlocuteurs, no session or session was closed
Mais je ne vois pas comment faire pour résoudre ce probleme. j'ai essaye de regarder , on parle bien de size() , mais je ne sais pas où le mettre .
Auriez vous une idée pour me dépanner?
Merci d'avance.
Partager