Spring 是否有任何钩子可以在事务上下文的出口处为每个实体调用实体上的方法或实体侦听器?
我们使用 Spring 和 Hibernate 来管理我们也为搜索编制索引的一堆实体。我们目前使用带有 Hibernate 的 @PreUpdate 方法的实体侦听器来在创建或修改实体时执行重新索引。当然,该事件仅在实体自身的一个或多个属性(即其数据库行中的值)被更新时触发。
当实体具有非平凡子属性的 @OneToMany 映射时,就会出现问题。当更新这些子属性之一时,不会在父实体上调用 PreUpdate 回调。
我们已经跟踪了属性的更新时间,但我们希望等到所有更新完成后再触发重新索引。进行此类重新索引调用的最佳位置是什么?PreUpdate 在大多数情况下运行良好,但这个问题让我想知道当实体离开 @Transactional 范围时是否存在挂钩。或者,当 OneToMany 孩子被持久化时,是否有一种休眠方式来触发父母的回调?