我有一个实现 Hibernate 的类,它通过 SpringPostInsertEventListener
与 Hibernate 相关联。SessionFactory
拦截器是为post-insert
事件类型指定的。每当我执行session.save(entity)
. 但是,执行发生在事务被刷新之前。如果数据库抛出异常,这是有问题的。
问题:有没有一种方法可以指定在
调用拦截器后session.flush()
调用拦截器?
我尝试insertEvent.getSession().flush()
在事件侦听器中执行此操作,但由于尚未设置 id,因此会产生主键违规异常。
我还没有探索这registerSynchronization
条路,因为我似乎缺少一些基本配置。正在使用的事务管理器org.springframework.orm.hibernate3.HibernateTransactionManager
和事务边界由@Transactional
注释指定。休眠版本是 3.6