Springを介しPostInsertEventListener
てHibernateに関連付けられているHibernateを実装するクラスがあります。SessionFactory
インターセプターは、post-insert
イベントタイプに指定されています。このインターセプターは、を実行するたびに呼び出されますsession.save(entity)
。ただし、トランザクションがフラッシュされる前に実行が行われます。データベースが例外をスローした場合、これは問題になります。
質問:が呼び出された後に
インターセプターを呼び出すように指定する方法はありますsession.flush()
か?
イベントリスナー内で実行しようとしinsertEvent.getSession().flush()
ましたが、IDがまだ設定されていないため、主キー違反の例外が発生します。
registerSynchronization
基本的な構成が不足しているように思われるため、まだ方法を検討していません。使用されているトランザクションマネージャーはでorg.springframework.orm.hibernate3.HibernateTransactionManager
あり、トランザクション境界は@Transactional
アノテーションによって指定されます。Hibernateバージョンは3.6です