我正在尝试删除父级列表而不删除子级
父级:
@Entity
public class Parent {
@Id
@Column(name = "PARENTID")
private Long id;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent")
private Set<Child> childs = new HashSet<Child>();
...
}
child :
@Entity
public class Child {
@Id
@Column(name = "CHILDID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="PARENTID", nullable = false)
private Parent parent;
...
}
我所做的是使用 HQL 查询更新所有子级,然后也使用 HQL 查询删除父级列表。
问题是这种方式太重了,有没有使用JPA的简单解决方案?
最佳答案
您可以在以下部分中将 Cascade 设置为不删除
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent")
private Set<Child> childs = new HashSet<Child>();
按如下方式编辑注释:
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, mappedBy = "parent")
以及您需要的任何其他 CascadeType 选项(请参阅 CascadeType Enums )。这将使当您删除 parent 时, child 也不会被删除。
关于java - 删除父实体而不删除子实体 (jpa),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980759/