【发布时间】:2018-12-04 10:46:52
【问题描述】:
我必须从父实体行中删除子实体行的集合。但是有些我的父实体也被删除了。
我看到上述问题是由于@ManyToOne 关系方面的“CascadeType.ALL”。但是,如果我在 @ManyToOne 中删除这个 CascadeType.ALL,当我对也有子实体的 Parent 执行持久化时,我会遇到异常。
org.springframework.dao.InvalidDataAccessApiUsageException: 对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例:
@Entity
public class Parent {
@Id
@Column(name = "ID")
private Long id;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", orphanRemoval=true)
private Set<Child> childs = new HashSet<Child>();
...
}
@Entity
public class Child {
@Id
@Column(name = "ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="PARENTID", nullable = false)
private Parent parent;
...
}
服务类:
final Parent parent = parentDao.find(parentId, status);
parent.getChilds().clear();
【问题讨论】:
标签: hibernate jpa spring-data-jpa