Sto usando oggetti persistenti usando JPA. L'oggetto Main ha una relazione One-Many proprietaria con un altro oggetto. L'altro oggetto è memorizzato in una HashMap. Quale tipo di sincronizzazione risolverebbe questo problema? Sembra che avvenga in momenti completamente casuali ed è molto imprevedibile. Ecco l'eccezione che ottengo:ConcurrentModificationException e una HashMap
Exception in thread "pool-1-thread-1" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$ValueIterator.next(Unknown Source)
at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:555)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
Potete fornire qualche altro co ntext? Stai unendo, aggiornando o eliminando un'entità? Quali associazioni esercitano questa entità? E le impostazioni a cascata? – ordnungswidrig
Dalla traccia dello stack è possibile vedere che l'eccezione si verifica durante l'iterazione tramite HashMap. Sicuramente qualche altro thread sta modificando la mappa ma l'eccezione si verifica nel thread che sta iterando. – Chochos
Possibile duplicato di [Iterazione attraverso una raccolta, evitando ConcurrentModificationException durante la rimozione in loop] (http://stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re) – Raedwald