我正在将 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
s。看起来这个bug还没有被报告,所以feel free to report it .
也许您可以更改
hibernate.order_inserts
的值作为解决方法。
关于Hibernate java.lang.ClassCastException : org. hibernate.action.EntityIdentityInsertAction 无法转换为 org.hibernate.action.EntityInsertAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7412252/