Bonjour,
Je n'arrive pas à m'en sortir, j'ai sans arrêt ce type d'exception. Je suis débutant sur Hibernate, et j'essaie de développer une appli avec.
Voici le problème :
Je possède plusieurs objets persistants pour modéliser une sorte de page. Une page a plusieurs tableau et chaque tableaux a plusieurs cellules. Cela nous donne plusieurs relation one-to-many en cascades. Ces relations sont en plus triées car ce sont des listes. (je dois pouvoir inverser la position des cellules dans le tableau).
Lors de la modification d'une cellule (tout au bout de la cascade) : je lève immencablement une ConcurrentModificationException.
Petit bout de code : l'exception est levée lors du commit, ou d'un flush si j'en mets un au niveau du commit.
voici un bout de mon mapping.try{
Cellule cell = (Cellule)HibernateUtil.getSession().get(Cellule.class, id);
HibernateUtil.beginTransaction();
cell.setContent(content);
HibernateUtil.commitTransaction();
}catch(Throwable e){
HibernateUtil.rollbackTransaction();
e.printStackTrace();
}finally{
HibernateUtil.closeSession();
}
et la stack :<class name="fr.xxxxx.admin.server.hibernate.beans.Tableau" table="TABLEAU">
<id name="id" column="Tableau_ID">
<generator class="identity"/>
</id>
<many-to-one name="page" column="REF_PAGE_ID" not-null="true"/>
<property name="index" column="TAB_INDEX" type="int" not-null="true"/>
<property name="width" column="TAB_WIDTH"/>
<property name="classe" column="TAB_CLASS"/>
<list name="cellules" inverse="true">
<key column="REF_TAB_ID"/>
<index column="CEL_INDEX"/>
<one-to-many class="fr.xxxxx.admin.server.hibernate.beans.Cellule"/>
</list>
</class>
<class name="fr.xxxxx.admin.server.hibernate.beans.Cellule" table="CELLULE">
<id name="id" column="CEL_ID">
<generator class="identity"/>
</id>
<property name="type" column="CEL_TYPE"/>
<property name="content" type="text" column="CEL_CONTENT"/>
<property name="width" column="CEL_WIDTH"/>
<property name="classe" column="CEL_CLASS"/>
<many-to-one name="tableau" column="REF_TAB_ID" not-null="true"/>
<property name="index" column="CEL_INDEX" type="int" not-null="true"/>
</class>
Caused by: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)
at java.util.HashMap$ValueIterator.next(HashMap.java:871)
at org.hibernate.pretty.Printer.toString(Printer.java:90)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:97)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at fr.xxxxx.admin.server.tools.HibernateUtil.commitTransaction(HibernateUtil.java:103)
Partager