2011-09-14 29 views
5

我正在使用Hibernate和EntityManager。當我使用Hibernate java.lang.ClassCastException:org.hibernate.action.EntityIdentityInsertAction無法轉換爲org.hibernate.action.EntityInsertAction

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) 

因爲它並沒有說哪一個實體引起該問題,我卡在這裏。有沒有人有一個想法是什麼會導致這種情況?

回答

2

這是Hibernate中的一個錯誤。異常被拋出時滿足以下條件:

  • ID生成策略是identity
  • 實體保存事務之外
  • hibernate.order_insertstrue

這是因爲EntityIdentityInsertAction可以被添加到ActionQueue.insertions列表,而ActionQueue$InsertActionSorter預計它只包含EntityInsertAction s。

看來這個bug還沒有報道,所以feel free to report it

也許你可以改變hibernate.order_inserts的值作爲解決方法。

相關問題