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 :

Erreur "org.hibernate.LazyInitializationException: could not initialize proxy - the owning Se"


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Erreur "org.hibernate.LazyInitializationException: could not initialize proxy - the owning Se"
    Bonjour,

    Je travaille avec hibernate, spring et struts.
    J'ai implémenté le code de l'ajout d'un utilisateur et tt marche bien.
    Mais pour la modification, j'ai le message d'erreur suivant:

    org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
    org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:53)
    org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
    org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
    com.adipsys.appliance.business.security.User$$EnhancerByCGLIB$$c6d4d95c.setName(<generated>)
    com.appliance.presentation.users.action.UpdateUserAction.execute(UpdateUserAction.java:37)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    La modifacation d'autres objets marche bien aussi mais là !!!!!

    Svp, si quelqu'un a une solution, merci de me la communiquer

  2. #2
    Membre averti
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Points : 368
    Points
    368
    Par défaut
    C'est l'erreur classique avec Hibernate. Il doit déjà y avoir 10000 réponses à ce sujet. Tout simplement Hibernate utilise de l'initialisation paresseuse (lazy), c'est à dire on initialise uniquement les collections lorsque c'est nécessaire. Dans ton cas, tu as du essayer d'accéder à une collection (en dehors d'une session) qui n'était pas initialisée.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci darkxan pour tes explicaions

  4. #4
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 99
    Points
    99
    Par défaut
    ok mais quesqu 'il faux faire ?????????????????????????????????

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par tongo Voir le message
    ok mais quesqu 'il faux faire ?????????????????????????????????
    Récupérer ta collection avant de fermer ta session par exemple.

  6. #6
    Membre régulier
    Inscrit en
    Mars 2008
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 109
    Points : 99
    Points
    99
    Par défaut
    salut,

    j'ai rajouter lazy="false" dans mon fichier hbm pour pouvoir récupérer ma collection.
    et ca marche

    a+.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 168
    Points : 103
    Points
    103
    Par défaut
    Attention aux performances en faisant çà.

    lazy=false charge l'ensemble de tes collections à chaque requête ! il est préféreable de laisser lazy=true et de te débrouiller pour récupérer toutes les données dont tu as besoin avant de clore la transaction

    je suis justement en train d'essayer d'optimiser mes requetes car pour le moment je suis en lazy=false et je souhaite passer en lazy=true

    je te renvois à mon message : http://www.developpez.net/forums/sho...d.php?t=593163

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    attention que çà ralenti hibernate de charger des collections en non-lazy et que çà risque de te faire charger tout la db en mémoire si t'as plusieurs collections comme çà

  9. #9
    Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2012
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 70
    Points : 67
    Points
    67
    Par défaut
    Donc comment faire pour résoudre ce problème, je pensais que je suis toujours en session, ou doit procédé par EAGER ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/03/2013, 14h53
  2. Réponses: 3
    Dernier message: 13/07/2011, 10h42
  3. Réponses: 2
    Dernier message: 11/11/2008, 21h29

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