2011-09-14 3 views
5

私はEntityManagerでHibernateを使用しています。私は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_insertsEntityIdentityInsertActionをに追加することができますので、それが起こるtrue

あるトランザクションの外部に保存されていますActionQueue.insertionsリストの場合、ActionQueue$InsertActionSorterにはEntityInsertActionだけが含まれています。

このバグはまだ報告されていないようですので、feel free to report itです。

おそらく、回避策としてhibernate.order_insertsの値を変更することができます。

関連する問題