Mal*_*Mal 5 java hibernate transactions
我有一些hibernate代码执行插入数据库,并在完成该插入后触发自定义的PostInsertEventListener.(基本上是确保其他记录得到适当更新的触发器)
我需要做的是使EventListener中的代码使用与原始插入相同的事务,这样如果插入没有成功提交,EventListener将不会触发.
我听说你可以使用javax.transaction.Syncronization和Hibernate的transaction.registerSyncronization()方法来做到这一点,但是我找不到任何可以使用的例子.
任何帮助表示赞赏.
我认为这是不可能的。
如果我理解,您只想在事务成功完成(已提交)时执行一些代码。但是,如果事务已提交,则由于事务已结束,因此您无法在同一事务中执行其他操作。
然而,您可以做的是使用在事务中(提交之前)调用的 PreInsertEventListener。如果事务失败,事件侦听器将触发事件(因为我们直到提交才知道事务是否会成功),但如果事务失败,您在侦听器中修改的任何内容都不会存储在数据库中。检查https://www.hibernate.org/hib_docs/v3/api/org/hibernate/event/EventListeners.html以获取侦听器列表。
不过有一个警告。您不应该在侦听器中进行过多的数据修改。特别是,您不应该触发任何集合的延迟加载。
| 归档时间: |
|
| 查看次数: |
2002 次 |
| 最近记录: |