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:
J'obtiens l'exeption 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; }
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.
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)
Voici la méthode getFichier() dans la classe Editeurs:
Merci de m'aider sur ce souci
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; }
Partager