如何避免将已删除的实例传递给与Set进行一对多关系的合并?

我在Hibernate实体中有此映射。


A.java


@OneToMany(mappedBy = "a", cascade = CascadeType.ALL)

Set<B> bs;

B.java


@ManyToOne(cascade = CascadeType.ALL)

@JoinColumn(name = "A_ID")

A a;

我需要对A进行编辑。


因此,在以带注释的方法加载实体后 Spring @Transactional


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);

上面的代码是单个方法的一部分。


我得到-删除的实例传递给合并。请提出建议。


温温酱
浏览 160回答 1
1回答

阿波罗的战车

您正在cascade = CascadeType.ALL课堂上使用B。因此,在执行entityManager.remove(b)删除操作时,是级联和删除的a。您可以B根据需要执行以下操作:@ManyToOne(cascade&nbsp;=&nbsp;{CascadeType.MERGE,&nbsp;CascadeType.PERSIST})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java