Por que é uma ConcurrentModificationException lançada e como depurá-la

Estou usando umCollection (umaHashMap usado indiretamente pelo JPA, acontece), mas aparentemente aleatoriamente o código gera umConcurrentModificationException. O que está causando isso e como faço para corrigir esse problema? Talvez usando alguma sincronização?

Aqui está o rastreamento de pilha completo:

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)

questionAnswers(6)

yourAnswerToTheQuestion