gpt4 book ai didi

java - Hibernate PostInsertEventListeners - 使用与插入相同的事务?

转载 作者:搜寻专家 更新时间:2023-10-31 20:24:27 24 4
gpt4 key购买 nike

我有一些执行插入数据库的 hibernate 代码,并在插入完成后触发自定义的 PostInsertEventListener。 (本质上是一个确保其他记录被适当更新的触发器)

我需要做的是让 EventListener 中的代码使用与原始插入相同的事务,这样如果插入没有成功提交,EventListener 就不会触发。

我听说您可以使用 javax.transaction.Syncronization 和 Hibernate 的 transaction.registerSyncronization() 方法来执行此操作,但是没有任何地方可以使用的示例我能找到。

感谢任何帮助。

最佳答案

我认为这是不可能的。

据我了解,您只想在事务成功完成(已提交)时执行一些代码。但是,如果事务已提交,您将无法在同一事务中执行其他操作,因为它已结束。

然而,您可以做的是使用在事务中调用的 PreInsertEventListener(在提交之前)。如果事务失败,事件监听器将触发事件(因为直到提交我们才知道事务是否成功)但是如果事务失败,您在监听器中修改的任何内容都不会存储在数据库中。检查https://www.hibernate.org/hib_docs/v3/api/org/hibernate/event/EventListeners.html用于听众列表。

虽然有一个警告。您不应该在监听器中进行过多的数据修改。特别是,您不应触发任何延迟加载集合。

关于java - Hibernate PostInsertEventListeners - 使用与插入相同的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com