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 :

Probleme Hibernate suppression d'un objet


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut Probleme Hibernate suppression d'un objet
    Bonjour à tous,
    ci-dessous, un probleme dont je n'arrive pas à localiser la cause.

    J'essai d'effectuer une suppresion en me basant sur session.delete, la suppression a bien lieu mais j'obtiens quand même l'exception:
    org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
    at dao.type_activite.TypeActivite$$EnhancerByCGLIB$$c389212b.getLibelleTypeAct(<generated>)
    at dao.test.TestJUnit.testDelete(TestJUnit.java:101)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186)
    voici le code de suppression :
    public void delete(TypeActivite typeActivite){

    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();

    TypeActivite T = (TypeActivite) session.get(TypeActivite.class, typeActivite.getTypeAct());
    session.delete(T);

    session.getTransaction().commit();
    }
    Je ne vois pas ce qui cloche
    help

  2. #2
    Membre actif Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Points : 266
    Points
    266
    Par défaut
    J'ai quand même un doute sur la provenance de ton erreur :-)

    qu'y a-t-il exactement à la ligne 101 de ton JUnit? (méthode testDelete).

    De ce que je lis ici, il essaye de charger une collection déclarée en Lazy alors que ta session Hibernate est fermée.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut
    tout d'abord merci

    voici ma testDelete :

    public void testDelete(){

    TypeActivite T = typeActiviteDao.getTypeById("ac1");

    typeActiviteDao.delete(T);

    assertEquals("act 1 test", T.getLibelleTypeAct());
    }
    Ne t'en fais pas pr la assertEquals je n'en connais pas encore tous les astuces, c'est pr ça qu'elle pas tres ASTUCIEUSE

  4. #4
    Membre actif Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Points : 266
    Points
    266
    Par défaut
    Heu sorry j'efface ma réponse j'ai du boire avant de poster sorry ;-p

  5. #5
    Membre actif Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Points : 266
    Points
    266
    Par défaut
    c'est plus que probablement ton assertEquals justement qui bloque :-)

    tu n'as pas de session d'ouverte quand tu fais ton T.getLibelleTypeAct()
    or libelleTypeAct est probablement déclaré en lazy dans ton mapping.

    le fait d'appeler le commit de ta transaction à fermé ta session Hibernate.
    c'est le comportement par défaut de gestion de la session par Hibernate (une session par transaction (comportement de getCurrentSession)

    Tu peux modifier ce comportement en ajoutant, dans ton hibernate.cfg.xml cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <property name="current_session_context_class">thread</property>
    qui va lier la session au thread courrant plutôt qu'a une transaction

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 75
    Points : 39
    Points
    39
    Par défaut
    bonjour bidi !
    Merci bcp de m'avoir aidé, tu as raison, c'est le assert qui generait l'exception
    Je viens d'apprendre deux leçons : primo, qu'il faut toujours bien examiner les logs des erreurs; et secondo, qu'il faut jamais sous estimer les assert

    pour ce qui est de
    <property name="current_session_context_class">thread</property>
    je l'ai deja ds mn hibernate.cfg.xml

    Merci encore !

  7. #7
    Membre actif Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Points : 266
    Points
    266
    Par défaut
    Tant mieux :-)

    Content d'avoir pu t'aider ;-)

Discussions similaires

  1. Aide hibernate Suppression Objet
    Par ahmedpa dans le forum Hibernate
    Réponses: 3
    Dernier message: 17/03/2014, 15h29
  2. Réponses: 2
    Dernier message: 30/05/2007, 15h54
  3. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39
  4. [VBA] Problem de suppression de composant
    Par jesus144 dans le forum IHM
    Réponses: 9
    Dernier message: 26/04/2006, 10h03
  5. [FLASH MX] Probleme avec le drag d'objet
    Par Toutouffe dans le forum Flash
    Réponses: 3
    Dernier message: 23/01/2005, 22h41

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