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 :

Résolution du problème ERROR org.hibernate.AssertionFailure avec Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java/ J2EE
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java/ J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 15
    Points
    15
    Par défaut Résolution du problème ERROR org.hibernate.AssertionFailure avec Hibernate
    Bonjour,

    Ca fait 2 jours que je parcours le web a la racherche de la solution à ce problème :

    S'il vous plaît, comment résoudre l'erreur suivant :
    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
     
     
     ERROR org.hibernate.AssertionFailure - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
    org.hibernate.AssertionFailure: collection [com.creasys.domain.Compte.authorities] was not processed by flush()
    	at org.hibernate.engine.CollectionEntry.postFlush(CollectionEntry.java:228) [hibernate3.jar:na]
    	at org.hibernate.event.def.AbstractFlushingEventListener.postFlush(AbstractFlushingEventListener.java:356) [hibernate3.jar:na]
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) [hibernate3.jar:na]
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) [hibernate3.jar:na]
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) [hibernate3.jar:na]
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137) [hibernate3.jar:na]
    	at com.test.BDD.main(BDD.java:227) [classes/:na]
    Erreur : 
    org.hibernate.AssertionFailure: collection [com.creasys.domain.Compte.authorities] was not processed by flush()
    	at org.hibernate.engine.CollectionEntry.postFlush(CollectionEntry.java:228)
    	at org.hibernate.event.def.AbstractFlushingEventListener.postFlush(AbstractFlushingEventListener.java:356)
    	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
    	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
    	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
    	at com.test.BDD.main(BDD.java:227)
    Merci de répondre .

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Montre nous ton code, ce sera plus parlant.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java/ J2EE
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java/ J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Je suis débutant avec Hibernate et je voulais créer une méthode qui affecte un dossier à un recouvreur ( association N:1)

    Dans la classe DAO j'ai :

    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
     
    @Override
    	public void assignDossierToRecouvreur(Dossier dossier, Recouvreur recouvreur) {
    		// TODO Auto-generated method stub
    		Session session         = HibernateUtil.getSessionFactory().getCurrentSession();
    		Transaction transaction = session.beginTransaction();
     
    		try {
     
    				Recouvreur aRecouvreur  = (Recouvreur) session.load(Recouvreur.class, recouvreur.getId());
    				Dossier    aDossier     = (Dossier) session.load(Dossier.class, dossier.getId());
     
    				aDossier.setEtat(Dossier.PROCEDURE_EN_ATTENTE);
    				session.update(aDossier);
     
    				aRecouvreur.addDossier(aDossier);
    				transaction.commit();
     
    		} catch(Exception ex) {
    			ex.printStackTrace();
    		} finally {
    			HibernateUtil.getSessionFactory().close();
    		}
    	}

    Dans la classe com.creasys.domain.Recouvreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    .....
     
     
    public void addDossier(Dossier dossier) {
    		dossiers.add(dossier);
     
    			if(!dossier.getRecouvreur().equals(this)) {
    				dossier.setRecouvreur(this);
    			}
     
    	}
     
    ...

    Les mapping :

    Dossier.hbm.xml

    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
     
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="com.creasys.domain.Dossier" table="dossier">
     
    		<id name="id" column="DOSSIER_ID" type="int">
    			<generator class="increment" />
    		</id>
     
    		......
    		<many-to-one name="recouvreur"  column="RECOUVREUR_ID" class="com.creasys.domain.Recouvreur" />
     
    	</class>
    </hibernate-mapping>
    Recouvreur.hbm.xml

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="com.creasys.domain.Recouvreur" table="recouvreur">
     
    		<id name="id" column="RECOUVREUR_ID" type="int">
    			<generator class="native" />
    		</id>
     
    		<many-to-one name="compte" column="username"
            class="com.creasys.domain.Compte" unique="true" not-null="true"/>
     
     
     
    		......
     
    		<set name="dossiers" inverse="true" lazy="false">
    			<key column="RECOUVREUR_ID" />
    			<one-to-many class="com.creasys.domain.Dossier" />
    		</set>
     
     
     
     
    	</class>
    </hibernate-mapping>
    Je ne sais pas trop comment faire avec les tables de Spring Security, j'ai fait comme ca ( ca marche bien pour les insertions ) ...

    Compte.hbm.xml
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="com.creasys.domain.Compte" table="users">
     
    		<id name="username" column="username" type="string">
     
    		</id>
     
    		<property name="password" column="password" type="string" />
    		<property name="enabled" column="enabled" type="boolean" />
     
    		<set name="authorities" inverse="true" lazy="false" >
    			<key column="username" />
    			<one-to-many class="com.creasys.domain.Authority" />
    		</set>
     
    	</class>
    </hibernate-mapping>

    Authority.hbm.xml

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
    	<class name="com.creasys.domain.Authority" table="authorities">
     
    		<id name="valeur" column="authority" type="string" >
     
    		</id>
     
    		<many-to-one name="compte" column="username" class="com.creasys.domain.Compte" />
     
    	</class>
    </hibernate-mapping>
    Toutes ma reconnaissance

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java/ J2EE
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java/ J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Ce qui est étonnant c'est que dès fois ça marche et dès fois non ..

  5. #5
    Membre habitué Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Points : 159
    Points
    159
    Par défaut
    essaye comme ça ?

    aDossier.setEtat(Dossier.PROCEDURE_EN_ATTENTE);
    aRecouvreur.addDossier(aDossier);

    session.update(aDossier);

    transaction.commit();
    Moins tu vas vite, plus tu vas moins vite!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de chargement des données avec hibernate
    Par nasnet dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 02/07/2013, 17h46
  2. probléme d'exécution de requete avec hibernate
    Par yazen dans le forum Persistance des données
    Réponses: 3
    Dernier message: 17/06/2008, 11h36
  3. Problème de relation 1-N avec hibernate 3
    Par otam_otam dans le forum Hibernate
    Réponses: 3
    Dernier message: 15/04/2008, 11h12
  4. Réponses: 0
    Dernier message: 23/10/2007, 12h47
  5. [Plugin][Hibernate]Eclipse avec hibernate(synchronizer)
    Par mg67 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 23/06/2005, 17h19

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