Hibernate java.lang.ClassCastException:org.hibernate.action.EntityIdentityInsertAction无法强制转换为org.hibernate.action.EntityInsertAction

Sti*_*n.V 6 hibernate flush entitymanager classcastexception

我正在使用Hibernate和EntityManager.我用的时候

    Session session = (Session)entityManager.getDelegate();  
    session.flush();
    session.clear();
Run Code Online (Sandbox Code Playgroud)

我明白了

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)
Run Code Online (Sandbox Code Playgroud)

既然它没有说明哪个实体导致问题,我就被困在这里.有谁知道是什么原因引起的?

axt*_*avt 2

这是 Hibernate 中的一个错误。当满足以下条件时抛出异常:

  • id生成策略是identity
  • 实体保存在事务之外
  • hibernate.order_insertstrue

发生这种情况是因为EntityIdentityInsertAction可以添加到ActionQueue.insertions列表中,而ActionQueue$InsertActionSorter期望它仅包含EntityInsertActions。

看起来这个错误还没有被报告,所以请随时报告它

也许您可以更改 的值hibernate.order_inserts作为解决方法。