I'm using Hibernate with an EntityManager. When I use
Session session = (Session)entityManager.getDelegate();
session.flush();
session.clear();
I get
java.lang.ClassCastException: org.hibernate.action.EntityIdentityInsertAction cannot be cast to org.hibernate.action.EntityInsertAction
at org.hibernate.engine.ActionQueue$InsertActionSorter.sort(ActionQueue.java:636)
at org.hibernate.engine.ActionQueue.sortInsertActions(ActionQueue.java:369)
at org.hibernate.engine.ActionQueue.sortActions(ActionQueue.java:355)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:224)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216)
Since it doesn't say which entity causes the problem, I'm stuck here. Does anyone have an idea what can cause this?
It's a bug in Hibernate. Exception is thrown when following conditions are met:
identity
hibernate.order_inserts is true
It happens because EntityIdentityInsertAction can be added to the ActionQueue.insertions list, whereas ActionQueue$InsertActionSorter expects that it contains only EntityInsertActions.
It looks like this bug was not reported yet, so feel free to report it.
Perhaps you can change the value of hibernate.order_inserts as a workaround.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With