JPA/Hibernate - 删除子删除父(从同一个表)
Posted
技术标签:
【中文标题】JPA/Hibernate - 删除子删除父(从同一个表)【英文标题】:JPA/Hibernate - delete child removes parent (from same table) 【发布时间】:2019-03-04 04:21:27 【问题描述】:我有一个类 Comment(见下文),其中包含一些属于父 Comment 的 Comment 对象。 到目前为止,当我删除父评论时,孩子也被删除(如预期的那样),但是当孩子被删除时问题就来了,因为父母也被删除了。 我猜这个问题来自课堂中使用的 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>();
干杯
【问题讨论】:
【参考方案1】:从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>();
【讨论】:
以上是关于JPA/Hibernate - 删除子删除父(从同一个表)的主要内容,如果未能解决你的问题,请参考以下文章
在 JPA/Hibernate 中使用 @OnetoMany 的实体中不存在时从数据库中删除子记录(Spring 引导应用程序)