IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

org.hibernate.LazyInitializationException: failed to lazily initialize, sur un objet précis


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Points : 19
    Points
    19
    Par défaut org.hibernate.LazyInitializationException: failed to lazily initialize, sur un objet précis
    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

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Souci resolut, j'avais des dates valorisées à null dans ma base, ce qui générer en réalité un NullPointerException suivi du LazyInitialization. En renseignant ces dates valorisées à null dans ma table je n'avais plus le soucis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/08/2014, 17h42
  2. Réponses: 10
    Dernier message: 07/03/2014, 16h18
  3. Réponses: 1
    Dernier message: 30/03/2013, 14h53
  4. Réponses: 3
    Dernier message: 13/07/2011, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo