JPA/Hibernate - 删除子项删除父项(来自同一个 table)
JPA/Hibernate - delete child removes parent (from same table)
我有一个 class 评论(见下文),其中一些评论对象属于父评论。
到目前为止,当我删除父注释时,子注释也被删除(如预期的那样),但是当删除子注释时问题就来了,因为父注释也被删除了。
我猜问题出在 class 中使用的 JPA 配置。
关于如何在不影响父行的情况下删除子行的任何想法?
public class Comment {
@Column
private String text;
@ManyToOne(cascade={CascadeType.ALL})
private Comment parent;
@OneToMany(cascade={CascadeType.ALL}, mappedBy="parent")
private Set<Comment> childs = new HashSet<Comment>();
}
干杯
从 parent
的映射中删除 cascade={CascadeType.ALL}
:
public class Comment {
@Column
private String text;
@ManyToOne
private Comment parent;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent") // or orphanRemoval=true
private Set<Comment> childs = new HashSet<Comment>();
}
我有一个 class 评论(见下文),其中一些评论对象属于父评论。 到目前为止,当我删除父注释时,子注释也被删除(如预期的那样),但是当删除子注释时问题就来了,因为父注释也被删除了。 我猜问题出在 class 中使用的 JPA 配置。 关于如何在不影响父行的情况下删除子行的任何想法?
public class Comment {
@Column
private String text;
@ManyToOne(cascade={CascadeType.ALL})
private Comment parent;
@OneToMany(cascade={CascadeType.ALL}, mappedBy="parent")
private Set<Comment> childs = new HashSet<Comment>();
}
干杯
从 parent
的映射中删除 cascade={CascadeType.ALL}
:
public class Comment {
@Column
private String text;
@ManyToOne
private Comment parent;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent") // or orphanRemoval=true
private Set<Comment> childs = new HashSet<Comment>();
}