我将Hibernate与EntityManager结合使用。当我使用
Session session = (Session)entityManager.getDelegate();
session.flush();
session.clear();
我懂了
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)
由于没有说明哪个实体会导致问题,因此我被困在这里。有谁知道会导致这种情况的原因吗?
最佳答案
这是Hibernate中的错误。满足以下条件时将引发异常:
identity
hibernate.order_inserts
是true
发生这种情况是因为
EntityIdentityInsertAction
可以添加到ActionQueue.insertions
列表中,而ActionQueue$InsertActionSorter
期望它仅包含EntityInsertAction
。似乎尚未报告此错误,所以feel free to report it。
也许您可以更改
hibernate.order_inserts
的值作为解决方法。