【发布时间】:2012-11-14 15:55:14
【问题描述】:
我正在使用 EclipseLink 2.3.3。具有大约 100 个实体的数据模型。我有一个使用注释映射到每个数据库表的 Java 类。
我有两个用例要实现。一个是新记录进入系统,命中大约 60-75 个表。对于这种情况,我希望合并并坚持级联,这样我就可以合并顶级对象并将该级联到所有相关实体。
另一个用例是我需要插入一组单独的对象,通常是一组不同表中的一个。在这种情况下,我不想要级联合并,因为我需要控制插入。如果我启用了级联,合并第一个对象可能会或可能不会合并其他对象,具体取决于它们是否相关或如何相关,所以我宁愿明确合并它们中的每一个。
所以本质上,我希望级联合并并在一种情况下持续存在,而不是另一种情况。因此,如果我在映射类中包含级联注释,我需要选择性地禁用某些操作的级联;或者,如果我关闭映射类中的级联,我想为某些操作启用级联。
到目前为止,我还没有找到任何方法来选择性地打开或关闭特定操作的级联。有一个 CascadePolicy 类,但它似乎只用于查询。有动态实体,我在想也许我可以用它来做一些事情,比如从现有实体创建一个动态实体,并关闭该实体关系上的级联行为,并以某种方式将其用于合并,但我无法找到合适的 API。
所以我想知道在我忽略的地方是否有更好的答案?感谢您提供任何信息。
【问题讨论】:
标签: jpa merge eclipselink cascade toplink