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 :

LazyInitializationException en exécution


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut LazyInitializationException en exécution
    Bonjour,

    Je développe des EJB3 avec JPA et GWT2 sur Eclipse 3.6.2 et serveur JBoss 6.

    J'obtiens l'erreur :

    Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.thales.jpa.Sg1Affaire.sg1Lotbes, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383) [:3.6.6.Final]
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375) [:3.6.6.Final]
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368) [:3.6.6.Final]
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111) [:3.6.6.Final]
    at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186) [:3.6.6.Final]
    at org.jboss.tools.gwt.server.GreetingServiceImpl.greetServer(GreetingServiceImpl.java:68) [:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_29]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_29]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_29]
    at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_29]
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) [:]
    ... 24 more
    Et je n'arrive pas à comprendre d'où ça vient!!!

    Enfin je sais d'où ça vient mais je n'arrive pas à résoudre le problème, j'ai compris que c'est un problème de transaction.
    Je ne résou le problème qu'en mettant une annotation fetch.EAGER sur l'attribut qui m'interresse.
    Avez-vous une possibilité de faire autrement que comme ça car la base de données est très importante et j'ai peur que le traitement soit extrèmement long..

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Tu dois certainement avoir un service qui a besoin de cette collection au démarrage de ton application, il faudrait que tu mettes un point d’arrêt et suive pas à pas le chargement de tes entités au démarrage pour savoir quel service en question tire ces entités.J'ai déjà eu à faire un souci pareil.On ne peut mieux t'aider au vu du peu d'informations que tu nous as soumises

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 230
    Par défaut
    je ne pense que ce soit un problème de transaction.

    Ton code à un endroit donné, tente de charger la collection alors que tu es en dehors de la session(=la session est fermée à ce moment là !), donc hibernate lève l'exception bien connu de LazyInitializationException. C'est tout-à-fait normal.

    La logique continue quand tu dis
    Je ne résou le problème qu'en mettant une annotation fetch.EAGER sur l'attribut qui m'interresse.
    tu obliges ici Hibernate à charger tout le temps ta collection; donc tu as résolu ton problème.

    Maintenant, si tu ne souhaites charger cette collection que dans des cas précis, tu dois fetcher ta collection lors de l'appel à la requête que tu utilises dans ton cas.

Discussions similaires

  1. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  2. [TTHREAD] ne termine pas sont exécution
    Par Bbenj dans le forum Langage
    Réponses: 4
    Dernier message: 02/08/2002, 16h42
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  4. Compression d'exécutables
    Par Atrebate62 dans le forum Windows
    Réponses: 3
    Dernier message: 21/07/2002, 16h39
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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