BOnjour
je développe sous Netbeans +glassfish+hibernate+mysql

J'ai un entity bean suivant:
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 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
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;
    }
 
 
}
La classe clients possède une liste d'interlocuteurs avec une annotation OneToMany.

Dans mon Bean, j'essai de lister les préleveurs par la méthode suivante:
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;
     }
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
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
Je pense que c'est du à un probleme de rattachement à mon entitymanager.
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.