Spring数据JPA实体更新机制与数据库

时间:2018-01-22 16:14:32

标签: java spring-data-jpa

A {
  @OneToMany(cascade = CascadeType.ALL)
  List<B> listB;
}

假设A有一个B列表,如果我使用A.setListB(anotherList)更新A,原始列表B中的项目仍然在数据库中,我该怎么做才能自动删除不在新列表B中的项目B我更新A?

2 个答案:

答案 0 :(得分:0)

尝试在注释中使用orphanRemoval=true

答案 1 :(得分:0)

使用JPA,您通常不会重新分配列表/集合变量,因为这会导致错误。这是由于JPA提供商&#34;追踪&#34;从数据库加载对象时的集合。相反,你应该这样做:

listB.clear();
listB.addAll(otherList);

根据其他答案的建议与orphanRemoval=true相结合,它应该按照您希望的方式运作。