Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实体退出@Transactional上下文时的Spring回调?_Spring_Hibernate_Transactional_Hibernate Onetomany_Entitylisteners - Fatal编程技术网

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

实体退出@Transactional上下文时的Spring回调?,spring,hibernate,transactional,hibernate-onetomany,entitylisteners,Spring,Hibernate,Transactional,Hibernate Onetomany,Entitylisteners,Spring是否有任何钩子可以在事务上下文的出口处调用实体上的方法或每个实体的实体侦听器 我们使用Spring和Hibernate来管理一组实体,我们还为这些实体编制索引以进行搜索。当前,我们使用一个实体侦听器和Hibernate的@PreUpdate方法在创建或修改实体时执行重新索引。当然,只有当实体自身的一个或多个属性(即其数据库行中的值)更新时,才会触发此事件 当实体具有非平凡子属性的@OneToMany映射时,就会出现问题。更新这些子属性之一时,不会对父实体调用PreUpdate回调 我

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

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

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

我们已经跟踪了属性的更新时间,但我们希望等到所有更新完成
在触发重新索引之前完成。在什么地方进行这样的reindex调用最好?PreUpdate在大多数情况下都能很好地工作,但这个问题让我怀疑,当一个实体离开@Transactional作用域时,是否存在一个钩子。或者,当一个OneToMany子对象被持久化时,是否有一种休眠方式来触发父对象上的回调?

我认为aspect是用于拯救的。看看spring文档中第10.5.8节建议的事务性操作。这将帮助您围绕@transactional方法编写方面,然后进行索引