当前位置: 首页 > 知识库问答 >
问题:

JPA 2.0中@postupdate、@postcreate等@postcreate回调方法的行为

公西俊民
2023-03-14

我在这里关心的是,如果SQL DELETE语句已经触发,那么事务将如何回滚?如果SQL DELETE语句无法删除该对象,则会引发异常,并且不会执行@POSTDELETE。那么,在什么场景下事务可以回滚??

谢谢大家抽出时间!!

共有1个答案

祁嘉木
2023-03-14

根据JPA规范:@postremove回调在EntityManager上的remove操作之后执行。

需要理解的关键点是,如果删除失败,EntityManager上的删除操作不会引发异常。事务可能被标记为“仅回滚”(即,这意味着事务结束时将回滚...并且异常将在事务结束时抛出)。

JPA规范表明,无论标记为“仅回滚”,都将执行@PostreMove回调(当然是在与remove操作相同的事务中)。

 类似资料:
  • javers中是否有可用的监听器,在执行特定操作之前会调用这些监听器。 例如,像preUpdate()这样的方法将在注册更新操作之前调用。

  • 在以下代码中,设置状态后,setState方法的回调不会像预期的那样执行。如果你检查控制台,你会明白我的意思。console.log读取的状态不是更新的状态。它总是前一个(你可以通过点击读取数组按钮来检查这个),但是根据反应文档: setState()的第二个参数是一个可选的回调函数,它将在setState完成并重新呈现组件后执行。通常,我们建议对此类逻辑使用componentDidUpdate(

  • 本文向大家介绍Lua中让回调函数支持回调对象方法的解决方法,包括了Lua中让回调函数支持回调对象方法的解决方法的使用技巧和注意事项,需要的朋友参考一下 在 Cocos2d-Lua 中,存在很多异步或延迟的操作,例如后台加载图片、等待一定时间执行代码等。这些功能的函数通常要求传入一个 function 作为参数。 但如果我们希望这种回调支持一个对象方法,就有点小困难了。因为 Lua 的对象方法在调用

  • 问题内容: 假设您需要执行一些依赖于某些临时文件的操作。既然我们在这里谈论Node,那么这些操作显然是异步的。为了知道何时可以删除临时文件,等待所有操作完成的惯用方式是什么? 这是一些代码,显示我想做什么: 但是,如果我这样编写,则可以在前两个调用有机会使用该文件之前执行第三个调用。我需要某种方法来确保前两个调用在结束之前已经完成(调用了它们的回调),而没有嵌套这些调用(并使它们在实践中保持同步)

  • 本文向大家介绍理解Android中Activity的方法回调,包括了理解Android中Activity的方法回调的使用技巧和注意事项,需要的朋友参考一下 为什么需要方法回调? 方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想。在JAVA中回调是通过接口来实现的。作为一种系统架构,必须要有自己的运行环境,并且要提供用户的实现接口。 下面通过实例来模拟一下Android中Activit

  • 问题内容: 想象一下,我们必须依靠ajax请求来源。当所有回调都触发时,我想执行一些操作。除了这种方法外,如何做到这一点: 我在这里不喜欢的是,在这种情况下,我无法处理响应失败(例如,我无法设置响应超时)和整体方法(我想应该有一种方法可以使用更多功能)在这里编程) 有任何想法吗? 问候! UPD: 感谢您提供链式回调的解决方案。我在这里找到了一个很好的方法。这是评论中提出的内容: 稍作调整,即可等