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

问题描述 投票:1回答:1

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

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

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

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

java hibernate jpa events
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.