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

实体退出@Transactional上下文时的Spring回调?

董凡
2023-03-14

Spring是否有任何钩子来调用实体上的方法,或者在事务上下文的出口处为每个实体调用实体侦听器?

我们正在使用Spring和Hibernate来管理一堆实体,我们还为这些实体进行索引以进行搜索。我们目前使用一个带有Hibernate的@PreUpdate方法的实体侦听器来在创建或修改实体时执行重新索引。当然,此事件仅在实体自身的一个或多个属性(即其数据库行中的值)更新时激发。

当实体具有非平凡子属性的@OneTomany映射时,就会出现问题。更新这些子属性之一时,不会对父实体调用PreUpdate回调。

我们已经跟踪属性更新的时间,但我们希望等到所有更新完成后再触发重新索引。把这样的重新索引调用放在什么地方才是最好的呢?PreUpdate在大多数情况下工作得很好,但这个问题使我怀疑是否有一个钩子用于实体离开@Transactional作用域。或者,是否有一种Hibernate方式可以在持久化一个子项时触发对父项的回调?

共有1个答案

傅树
2023-03-14

我觉得aspect是用来救援的。请看一下spring文档中的10.5.8节建议事务性操作建议事务性操作这将帮助您围绕@transactional方法编写方面,然后进行索引。

 类似资料:
  • 我使用的是Spring Boot应用程序,在上面我试图实现事务性管理。但是Spring不会回滚用相同方法保存的数据。 代码库:https://github.com/vinothr/spring-boot-transactional-example

  • 在我的应用程序中,我想在按下后退按钮时退出应用程序,这是我的代码: 它工作正常,但当我退出应用程序时,它不会完全退出,并显示带有我的应用程序徽标的空白页面,当我再次按下后退按钮退出应用程序,我如何修复它??? 编辑: 我使用这个代码而不是上面的代码,但我的应用程序完全退出,但我希望它在后台运行并且不完全退出,我该怎么做?

  • 问题内容: 我目前正在使用 我对Python相当陌生,但是它“感觉”到应该有一些api可以让我做类似的事情: 我这样做是为了在知道cmd已经退出的情况下可以执行某些操作(例如,对当前正在运行的外部进程数进行计数) 我以为我可以将子流程包装在将线程与方法结合在一起的类中,但是由于我还没有在Python中完成线程,而且对于API来说这似乎很常见,我想我会尝试先找到一个。 提前致谢 :) 问题答案: 您

  • 在我开始这看似很长的一段之前,我想对我可能收到的任何建议/建议表示感谢。朱约翰 我开发了一个简单的测试来帮助我理解spring的声明性(@Transactional)事务管理框架如何与spring的RESTful web服务结合使用。 为此,我开发了以下RESTful控制器: 其中,“tester”是以下服务类的bean,并自动连接到此控制器。类中唯一的方法是事务性的: 在上面,GenericDB

  • 注册退出回调 # atexit_simple.py import atexit def all_done(): print('all_done()') print('Registering') atexit.register(all_done) print('Registered') # atexit_multiple.py import atexit def my_clea

  • 我正在使用一个教程,它描述了如何使用Spring Boot、Spring Security和AngularJS编写简单的单页应用程序:https://Spring.io/guides/tutorials/spring-security-and-angull-js/ 我无法注销当前登录的用户-当我执行POST请求到“/logout”时,我从Google Chrome调试器中得到“404 not fo