2011-10-27 16 views
0

Hibernateに関するいくつかの問題に直面しています。オブジェクトをその子と一緒に保存する必要があります。各子には複合主キーがあります。キーの1つのプロパティがトリガーによって挿入されます。 saveOrUpdate(Object)を呼び出す前に、別のプロパティをプログラムから設定します。コンポジットプライマリキーの休止状態の問題

ただし、オブジェクトを保存することはできません。 Hibernateは例外Same identifier is already exists in the sessionをスローします。

私はsession.clear()を試しましたが、同じ例外があります。 session.merge()を試したところ、最後の子だけが保存され、他は無視されました。

+0

保存しようとしているオブジェクトのhbmファイルまたはjavaを公開できますか。 – ManuPK

答えて

1

あなたが同じHibernateのSessionに一度保存されたオブジェクトを必要としない場合は、あなたが正しいSession.evict()で保存した後、それらを切り離すことができは:また

// children is the collection of detached children, ready to save 
for (Child child : children){ 
    session.save(child); 
    session.evict(child); 
} 

、Hibernateのフォーラムでこのエントリは役に立つかもしれません:Before Insert Trigger and ID generator。あなたのニーズに合わせて統合できるAbstractPostInsertGeneratorの実装があります。