gpt4 book ai didi

java - JPA - 从 OneToMany 关系中删除一个 child

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:41 24 4
gpt4 key购买 nike

@OneToMany 关系中,如果我想删除一个 child ,我是否也需要从 parent 的集合中明确删除该 child ,还是只删除该 child 就足够了?

例如,PersonPhone。每个人都有很多电话号码。如果我想删除一个人的一个电话号码就足够了:

EntityManager.remove(phone);

或者我需要事先这样做:

Person.getPhone().remove(phone); 

更不用说,CascadeType 设置为MERGE

最佳答案

您需要从 phones 集合中显式删除 Phone,仅使用 EntityManager 删除它是不够的。

从另一方面来说,使用 orphanRemoval 可能就足够了,因此如果您从集合中删除一个实体,它会自动删除。像这样的东西:

@OneToMany(mappedBy="person", orphanRemoval="true")
private List<Phone> phones;

另请参阅:http://docs.oracle.com/cd/E19798-01/821-1841/giqxy/index.html

Cascade.REMOVE 仅在父实体也被移除时才移除子实体。 Cascase.MERGE 与此问题无关。

关于java - JPA - 从 OneToMany 关系中删除一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625534/

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