我想执行软删除(即,将记录移动到另一个存档表)。触发器不是选项。我尝试利用HibernatePostDeleteEventListener来实现这一点。问题是,无法在侦听器本身中使用event.getSession().save(anotherEntity)
,因为它会被忽略我尝试在保存后添加一个显式的event.getSession().flush()
-但这也不起作用,因为flush()方法调用从头开始重新触发相同的Hibernate侦听器,它们会发生冲突。
我知道我可以在一个单独的交易,但我需要在同一个。
有什么选择吗?
先谢了。
2条答案
按热度按时间sdnqo3pr1#
根据您使用的数据库,用SQL合并语句替换用于删除操作的SQL语句可能是最简单的方法。
hc2pp10m2#
由于使用了Spring Data REST-使用其事件支持解决了问题-https://docs.spring.io/spring-data/rest/docs/current/reference/html/#events