gpt4 book ai didi

java - JPA 采用(与孤儿移除相反)

转载 作者:行者123 更新时间:2023-11-30 07:58:57 27 4
gpt4 key购买 nike

自 JPA 2.0 以来,关系上有 orphanRemoval 属性,它极大地简化了父子关系的更新,并且与级联删除一起允许删除树的整个分支并轻松删除它。

但是,也有一些情况可能被标记为“收养”,即您将 child 转移给另一位 parent 。在这些情况下,orphanRemoval=true 不起作用,因为必须将子级从其原始父级的子级集合中删除,使其成为临时孤儿,具体取决于删除/添加操作的顺序。

根据this EclipseLink wiki entry JPA 规范尚不​​支持采用。

我找不到有关此问题的任何进一步信息,因此这要么意味着“采用”是错误的术语(尽管我认为它非常合适),要么这种情况非常罕见,无法在规范中考虑并询问在网上。

我基本上想要的是孤儿删除,因为它只是添加另一个父级采用的实体(并且该父级在同一事务中更新,例如通过级联更新公共(public)根)不是' t 被视为孤儿,因此未被删除。

对此有什么想法吗?

最佳答案

JPA 规范对此并不清楚。但是,我敢打赌,实现中的实际行为与规范所说的不同,并且与您的采用想法相对应 - 不删除引用的实体更有意义。您确定您的实现(eclipselink、hibernate)无法按您的预期工作吗?

例如,即使您在实体上显式调用 em.remove(),如果它被另一个实体引用,hibernate 也不会从数据库中删除它,它只会忽略删除。我不确定这是否也适用于孤儿,但我敢打赌是这样。在 Eclipselink 中,来自 issue与维基文章相关的是,他们解决了这个问题,如果孤儿被另一个实体收养,他们就不会删除它们。

关于java - JPA 采用(与孤儿移除相反),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com