Bonjour, j'ai un souci sur un de mes service quand j'essai d’insérer une entrée en base. Je suis sur du hibernate 3.

L'implementation du service est la suivante:

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
 
public Editeurs addDeclaration(long produitId, long requetes, long records) throws RemoteException {
         Session sqlSession = null;
 
         Editeurs user = null;
 
         try {
             // Ouverture session SQL
             Context ctx = new InitialContext();
             SessionFactory factory = (SessionFactory)ctx.lookup("hbm/Annuaire");            
             sqlSession = factory.openSession();
             ProduitVendu produit = (ProduitVendu)sqlSession.load(ProduitVendu.class, new Long(produitId));
             Declaration declaration = new Declaration();
             declaration.setProduit(produit);
             declaration.setDebut(produit.getNextDeclarationStartDate());
             declaration.setFin(produit.getNextDeclarationEndDate());
             declaration.setRequetes(requetes);
             declaration.setEnregistrements(records);
             System.out.println("Save Declaration");
             sqlSession.save(declaration);
             sqlSession.flush();
             user = produit.getEditeurs();
             sqlSession = factory.openSession();
 
             user = (Editeurs)sqlSession.load(Editeurs.class, new Long(user.getEditeurId()));
 
         catch (Exception e) {
         //    throw new RemoteException(e.getMessage());
             e.printStackTrace(System.out);
         }
         finally {
             sqlSession.close();
         }
 
         return user;
     }
J'obtiens l'exeption suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
- failed to lazily initialize a collection of role: com.orange.annuaire.model.ProduitVendu.fichiers, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.orange.annuaire.model.ProduitVendu.fichiers, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
	at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
	at com.orange.annuaire.model.Editeurs.getFichiers(Editeurs.java:455)
Le problème vient je pense du fait que l'attribut "fichiers" de la classe "Editeurs" qui compose "ProduitVendu" ne peut être chargé à la demande dans cette session.

Voici la méthode getFichier() dans la classe Editeurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public List getFichiers() {
		List result = new ArrayList();
	    for(Iterator i = this.getProduitVendus().iterator(); i.hasNext();) {
	    	ProduitVendu produit = (ProduitVendu)i.next();
	        for(Iterator j = produit.getFichiers().iterator(); j.hasNext();) {
	        	Fichier fic = (Fichier)j.next();
	            Hibernate.initialize(fic);
	            result.add(fic); 
	        }
	    }
        return result;
	}
Merci de m'aider sur ce souci