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 :

Exception: Illegal attempt to associate a collection with two open sessions


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut Exception: Illegal attempt to associate a collection with two open sessions
    Bonjour,

    J'ai un objet "Dossier" qui est lié - entre autre - à deux autres objets en relation one-to-many

    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
    37
    38
    39
    40
    41
    42
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="com.xxx.beans">
    	<class name="Dossier" table="DOSSIERS">
     
    		<id name="code" type="int" column="ID_DOSSIER">
    		</id>
     
    		<property name="Description" column="DESCRIPTION" type="string"
    			not-null="true" />
    		<property name="DateActivation" column="DATE_ACT" type="date"
    			not-null="true" length="7" />
    		<property name="DateDesactivation" column="DATE_DES" type="date"
    			not-null="false" length="7" />
    		<property name="Type" column="TYPE" type="string"
    			not-null="true" length="3" />
    		<property name="Proprietaire" column="ACTEUR" type="string"
    			not-null="true" length="50" />
    		<many-to-one name="EtatDossier" column="FK_ID_ETAT_DOSSIER"
    			class="EtatDossier" not-null="true" lazy="false">
    		</many-to-one>
     
     
    		<set name="ListeDemandeModifValeur" table="DEMANDE_MODIF_VALEUR"
    			inverse="true" lazy="false">
    			<key column="FK_DOSSIER" />
    			<one-to-many class="DemandeModifValeur" />
    		</set>
     
    		<set name="ListeDemandeModif" table="DEMANDE_MODIF"
    			inverse="true" lazy="false">
    			<key column="FK_DOSSIER" />
    			<one-to-many class="DemandeModification" />
    		</set>
     
     
    	</class>
    </hibernate-mapping>

    mais quand j'appelle un update de mon DAO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public void updateDossier(Dossier dossier){
    		getHibernateTemplate().update(dossier);
     
    	}
    j'ai l'exception suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Illegal attempt to associate a collection with two open sessions
    Any Help please!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Comment gères-tu les sessions Hibernate ? Le problème semble venir de là.
    Christophe

    Pensez à mettre quand c'est le cas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    J'utlise Spring et Hibernate. Normalement la gestion des sessions est déléguée à Spring!

    voici mon fichier de conf spring

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
     
    	<bean id="selfcareBODataSource"
    		class="org.springframework.jndi.JndiObjectFactoryBean">
    		<property name="jndiName" value="jdbc/SFCBO_SFCREF" />
    	</bean>
     
    	<bean id="selfcareBOSessionFactory"
    		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    		<property name="dataSource" ref="selfcareBODataSource" />
    		<property name="mappingResources" >
    			<list>			 
    				<value>com/xxx/mapping/Dossiers.hbm.xml</value>
    				.....				
     
     
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
    				<prop key="hibernate.show_sql">true</prop>
    				<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
    			</props>
    		</property>
    	</bean>
    	<!-- Les transactions -->
     
     
    	<bean id="selfcareBOTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory">
    			<ref bean="selfcareBOSessionFactory"/>
    		</property>
    	</bean>
     
     
     
    	<!-- Define usual DAO Objects -->
     
     
    	<bean name="dossierDAO"
    		class="com.xxx.dao.DossierDAO">
    		<property name="sessionFactory" ref="selfcareBOSessionFactory" />
    	</bean>
    	.......
     
     
    </beans>

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je n'ai jamais utilisé Spring. Désolé là je ne peux pas t'aider.
    Christophe

    Pensez à mettre quand c'est le cas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/02/2009, 09h07
  2. Réponses: 6
    Dernier message: 20/07/2007, 14h17
  3. Réponses: 2
    Dernier message: 13/10/2006, 17h38
  4. Réponses: 4
    Dernier message: 20/07/2006, 17h26

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