【发布时间】:2010-10-10 19:10:51
【问题描述】:
我正在使用Collection(JPA 间接使用的HashMap,它确实如此),但显然代码随机抛出ConcurrentModificationException。是什么原因造成的,我该如何解决这个问题?也许通过使用一些同步?
这是完整的堆栈跟踪:
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)
【问题讨论】:
-
你能提供更多的上下文吗?您是否正在合并、更新或删除实体?这个实体有什么关联?你的级联设置呢?
-
从堆栈跟踪中您可以看到在遍历 HashMap 时发生了异常。肯定有其他线程正在修改地图,但异常发生在正在迭代的线程中。
标签: java exception collections concurrentmodification