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

Posted

技术标签:

【中文标题】实体退出@Transactional上下文时的Spring回调?【英文标题】:Spring callback when Entity exits @Transactional context? 【发布时间】:2012-07-12 19:50:52 【问题描述】:

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

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

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

我们已经跟踪了属性的更新时间,但我们希望等到所有更新都完成后 在触发重新索引之前完成。进行此类重新索引调用的最佳位置是什么? PreUpdate 适用于大多数情况,但这个问题让我想知道当实体离开 @Transactional 范围时是否存在挂钩。或者,当 OneToMany 孩子被持久化时,是否有一种 Hibernate 方式来触发父母的回调?

【问题讨论】:

【参考方案1】:

我认为方面是为了救援。看看 Spring 文档中的 10.5.8 建议事务操作Advising transactional operations 部分,这将帮助您围绕@Transactional 方法编写方面,然后进行索引。

【讨论】:

以上是关于实体退出@Transactional上下文时的Spring回调?的主要内容,如果未能解决你的问题,请参考以下文章

Spring saml,第二个本地 SP - 实体别名和上下文提供者

清除异常时的实体框架上下文

EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)

为啥使用 Spring Data JPA 更新实体时@Transactional 隔离级别不起作用?

win7 sp1 Error_transaction_not_active

编辑上下文中的所有实体