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 :

Illegal attempt to associate a collection with two open sessions


Sujet :

Hibernate Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut Illegal attempt to associate a collection with two open sessions
    Salut,

    J ai un petit soucie lorsque j essaye de supprimer un objet dans ma base de donnée.

    J'effectue le code suivant depuis mon managed bean :

    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
     
    	public String deleteList() {
    		ec.log("Begin - deleteList()");
    		try {
    			for (int i = 0; i < dataList.size(); i++) {
    				selectedData =  dataList.get(i);
    				if (selectedData.getIsSelected()) {
    					languageService.deleteLanguage(selectedData);
    					this.deleteSelectedFromDataList();
    					ec.log("deleteList(), selectedData to delete:"
    							+ selectedData);
    				}
    			}
    			selectedData = null;
    			ec.log("End - deleteList()");
    			return GO_LIST;
    		} catch (RuntimeException ex) {
    			ec.handleError(ERROR_DELETE, ErrorLevel.WARNING, ex);
    			UtilGui.setJSFErrorMessage("error_delete_list", ex);
    			return GO_LIST;
    		}
    	}
    et hibernate me throw une exception sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    languageService.deleteLanguage(selectedData);
    Et dans mon service j ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public void deleteLanguage(Language lang) {
    		// TODO Auto-generated method stub
    		languageDbDAO.delete(lang.getDbEntity());
    	}
    et le code de mon DAO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	public void delete(LanguageDb persistentInstance) {
            ec.log("deleting LanguageDb instance");
            try {
                getHibernateTemplate().delete(persistentInstance);
                ec.log("delete successful");
            } catch (HibernateException he) {
                ec.handleError("HibernateException", ErrorLevel.ERROR, he);
            } catch (DataAccessException dae) {
            	ec.handleError("DataAccessException", ErrorLevel.FATAL, dae);
            }
        }
    Et voici le log :

    FATAL http-8080-Processor24 com.mtsa.ebonus.core.db.LanguageDbDAO - 2006.07.13 14:27:25.701 FATAL_SOFT_DataAccessException Error message for this error code could not be found.|
    org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
    org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
    at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:237)
    at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:41)
    at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:104)
    at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:64)
    at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:58)
    at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:129)
    at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
    at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:579)
    at org.springframework.orm.hibernate3.HibernateTemplate$25.doInHibernate(HibernateTemplate.java:767)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:365)
    at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:761)
    at org.springframework.orm.hibernate3.HibernateTemplate.delete(HibernateTemplate.java:757)
    at com.mtsa.ebonus.core.db.LanguageDbDAO.delete(LanguageDbDAO.java:43)
    at com.mtsa.ebonus.core.business.LanguageServiceImpl.deleteLanguage(LanguageServiceImpl.java:62)
    at com.mtsa.ebonus.core.gui.LanguageGui.deleteList(LanguageGui.java:250)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
    at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
    at javax.faces.component.UICommand.broadcast(UICommand.java:106)
    at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
    at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:330)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:84)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)

    Si quelqu un vois de quoi ca peut provenir ca serait génial

    d avance merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Ca peut venir du commit qui serait pas fait.
    Ou bien, d'un problème de sessions, deux sessionsFactory ouvertes, et pas fermés.
    Celle qui a créé l'objet qui n'est pas fermée, alors qu'une autre essai de le supprimer ! Vérifie l'instanciation de tes sessionsFactory avant tes appels.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par cicolas
    Ca peut venir du commit qui serait pas fait.
    Ou bien, d'un problème de sessions, deux sessionsFactory ouvertes, et pas fermés.
    Celle qui a créé l'objet qui n'est pas fermée, alors qu'une autre essai de le supprimer ! Vérifie l'instanciation de tes sessionsFactory avant tes appels.
    en fait mon hbm était faux

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Mets ton hbm correct alors, ça peut servir d'exemple pour certains.
    Et pense à mettre en résolu alors

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Citation Envoyé par cicolas
    Mets ton hbm correct alors, ça peut servir d'exemple pour certains.
    Et pense à mettre en résolu alors
    j ai parlé trop vite en disant que le pb était résolu sorry lol

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2009, 10h41
  2. Réponses: 2
    Dernier message: 26/02/2009, 09h07
  3. Réponses: 6
    Dernier message: 20/07/2007, 14h17
  4. Réponses: 3
    Dernier message: 28/02/2007, 16h21
  5. Réponses: 2
    Dernier message: 13/10/2006, 17h38

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