如何从“一对多”列表中正确删除实体?

时间:2013-10-27 21:11:12

标签: java database hibernate

如果想在以下示例中将此人从公司中移除,这意味着什么?

class Company {
    @OneToMany(mappedBy = "company");
    List<Person> persons;
}

class Person {
    Company company;
}

我的意思是,Company中的人员列表始终是懒惰的。删除一个人(来自数据库)意味着只删除个人实体(例如,通过ID),而不必更改所属公司的persons列表中的任何内容?

1 个答案:

答案 0 :(得分:2)

您必须从persons中删除此人并保存公司对象。

company.getPersons().remove(person);

如果在保存公司对象后应自动从数据库中删除person对象,请设置orphanRemoval标志。有关详细信息,请参阅the documentation

/ edit:由于您使用Hibernate标记了问题,因此all-delete-orphan级联选项可能会对您有所帮助。