我在Hibernate实体中有此映射。
A.java
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "A_ID")
A a;
B.java
Spring @Transactional
我需要对A进行编辑。
因此,在使用A a = entityManager.find(A.class, a.getId);
// set some new values on the instance variables of a.
// take out the set of Bs through a and delete them
for(B b : a.getBs()) {
entityManager.remove(b);
}
// create new objects of B and add them to the below set-
Set<B> bs = new HashSet<>();
a.setBs(bs);
entityManager.merge(a);
注释的方法中加载实体后
{{1}}
上面的代码是单个方法的一部分。
我得到-传递给合并的已删除实例。 请提出建议。
答案 0 :(得分:1)
您正在cascade = CascadeType.ALL
类中使用B
。因此,在执行entityManager.remove(b)
时,删除操作是级联并删除a
。
您可以根据需要在B
中执行以下操作:
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})