java - ConcurrentModificationException upon committing transaction with Hibernate -
in our application have upgraded hibernate 3.5.6-final 4.2.21.final , getting concurrentmodificationexception
when database transaction committed:
java.util.concurrentmodificationexception: null @ java.util.arraylist$itr.checkforcomodification(arraylist.java:901) @ java.util.arraylist$itr.next(arraylist.java:851) @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:386) @ org.hibernate.engine.spi.actionqueue.executeactions(actionqueue.java:304) @ org.hibernate.event.internal.abstractflushingeventlistener.performexecutions(abstractflushingeventlistener.java:349) @ org.hibernate.event.internal.defaultflusheventlistener.onflush(defaultflusheventlistener.java:56) @ org.hibernate.internal.sessionimpl.flush(sessionimpl.java:1195) @ org.hibernate.internal.sessionimpl.managedflush(sessionimpl.java:404) @ org.hibernate.engine.transaction.internal.jdbc.jdbctransaction.beforetransactioncommit(jdbctransaction.java:101) @ org.hibernate.engine.transaction.spi.abstracttransactionimpl.commit(abstracttransactionimpl.java:175)
is known issue hibernate 4.2?
the exception turned out caused problem hibernate custom constraint validator use. validator's isvalid
running hibernate criteria query. query triggered hibernate session flush resulted in concurrentmodificationexception
. fixed problem temporarily disabling auto flush in isvalid
method:
@override public boolean isvalid(object object, final constraintvalidatorcontext c) { try { sessionfactory.getcurrentsession().setflushmode(flushmode.manual); ... } { sessionfactory.getcurrentsession().setflushmode(flushmode.auto); } }
the problem may manifest stackoverflowerror
.
Comments
Post a Comment