(注:このブログはもう更新していません)この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

[クラウド帳票エンジンDocurain]

Query#getResultListでConcurrentModificationException?

EclipseLink(1.1.2)が良く分からないエラーを吐く。何でConcurrentModificationExceptionになるんだろう。

java.util.ConcurrentModificationException 
    java.util.IdentityHashMap$IdentityHashMapIterator.nextIndex(IdentityHashMap.java:715)
    java.util.IdentityHashMap$KeyIterator.next(IdentityHashMap.java:804)
    org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:567)
    org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:308)
    org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:527)
    org.eclipse.persistence.internal.jpa.EJBQueryImpl.performPreQueryFlush(EJBQueryImpl.java:1010)
    org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeReadQuery(EJBQueryImpl.java:344)
    org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultList(EJBQueryImpl.java:568)


いまEclipseLinkのソースを読んでます… うう、メンドクサイ。



(追記)
どうやら、双方向関連を持つエンティティを更新するときに、更新値のセットの仕方をミスると発生する模様です。
この問題については、ひとまずアタリが付いたので、これ以上深掘りしないことにしておきます。



(更に追記)
とうとう解決しました。コチラをご覧ください。