gpt4 book ai didi

java - Hibernate PersistentSet remove() 操作不起作用

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

我的父实体中有一个集合,如下所示:

Class Parent {
@OneToMany(mappedBy = parent, cascade = CasacadeType.ALL)
Set<Child> children;
}

Class Child {
@Column(nullable=false)
@ManyToOne
Parent parent;
}

现在,如果我对 Set 中的其中一个元素执行 remove() 操作,它实际上并没有被删除。

最佳答案

您的映射应如下所示:

public class Parent { 
@OneToMany(mappedBy = parent, cascade = CasacadeType.ALL, orphanRemoval = true)
private Set<Child> children = new HashSet<>();

public void removeChild(Child child) {
children.remove(child);
child.setParent(null);
}
}

public class Child {
@ManyToOne
private Parent parent;
}

因为你有一个双向关联,所以你必须让双方同步。

因此,最好调用:

parent.removeChild(child);

这样,removeChild 将从 children Set 中移除 Child 并设置 Child parent 关联到 null

关于java - Hibernate PersistentSet remove() 操作不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125210/

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