【发布时间】:2013-05-20 15:32:05
【问题描述】:
在 Hibernate Entities 中的 ManyToOne 关联的两侧使用 Cascade 是否合适?为了使我的问题更具体,让我们假设某人有以下相关实体:
public class Department
{
public long id;
@OneToMany(mappedBy = "department", cascade=cascadeType.REMOVE)
private Set<Employee> employees;
}
public class Employee{
@GeneratedValue(strategy=GeneratedValue.identity)
public longempid;
@ManyToOne
public Department department;
}
在上述关系中,Department 有多个Employees,因此在删除Department 时强制删除Employees 是合理的。我说的对吗?
但是,关系的所有者是Employee。因此我的问题是,关于将cascadeType.PERSIST 放在哪里的正确选择是什么。我可以根据特殊需要选择两侧中的一个,或者我可以将它放在两侧吗?如果我把它放在Department 一侧,考虑到Employee 是关系的所有者,以下代码是否也保存了Employees?
Employee e1 = new Employee();
Employee e2 = new Employee();
Department d = new Department();
d.getEmployees.add(e1);
d.getEmployees.add(e2);
em.persist(d);
如果我将cascadeType.PERSIST 放在Employee 一侧,我几乎可以肯定相反的效果。(保存Employee 也会保存Department)。
【问题讨论】:
标签: hibernate jpa entity cascade