JPA:持久化/更新孩子期间的事件通知?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA:持久化/更新孩子期间的事件通知?相关的知识,希望对你有一定的参考价值。

我有两个实体A和B.A与B(A.listOfBs :: List)有多对一的关联。如果B已添加到已存在的A中,我想在B持续存在之前进行验证。

调试我们的JPA实现(Hibernate),我了解到它基本上级联关联,并且知道它的父< - >子关联只调用B上的PrePersist-handler而不调用A上的BeforeUpdate。

由于我不想引入双向映射,我想知道如何在B的持续阶段验证A的孩子,因为A有特殊要求(没有两个孩子共享相同的类型)。

我是否有任何机制可以了解父母< - >儿童相关事件围绕持久或删除特定父母的子女?

答案

从调试到Hibernate(另一个框架可能不同),持久化事件仅在每个实体级别上处理。持久化上下文中的子级和父级之间存在映射,该映射在持久化实体之前设置(请参阅处理/持久化关联)。如果能够访问它,即使没有双向连接,孩子也可以通知其父事件。所有这些将继续感觉像是一个黑客。

最好的解决方案似乎是监听会话级事件并遍历托管实体列表,无论这些事件是否已更改,都要对其进行验证。

以上是关于JPA:持久化/更新孩子期间的事件通知?的主要内容,如果未能解决你的问题,请参考以下文章

架构设计:系统存储(16)——Redis事件订阅和持久化存储

使用 openJPA 持久化更新查询

JPA合并与持久化[重复]

工作流中的数据持久化详解!Activiti框架中JPA的使用分析

JPA 和 Play 框架:EntityManager 没有名为更新的持久性提供程序

JPA 的批量更新触发 TransactionalEventListener?