Hibernate EntitiesCascadeの関連付けの両側で使用するのは適切ですか? ManyToOne私の質問をより具体的にするために、誰かが次の関連エンティティを持っていると仮定しましょう:
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;
}
上記の関係では、 aDepartmentには多くのがあるため、 a が削除されたときにEmployeesを強制的に削除するのが合理的です。私は正しいですか?EmployeesDepartment
ただし、関係の所有者はEmployee. したがって、私の質問は、cascadeType.PERSIST. 特別なニーズに応じて、両面のどちらかを選択できますか、それとも両方に配置できますか? 横に置いた場合、 がリレーションの所有者であることを考慮してDepartment、次のコードは も保存しますか?EmployeesEmployee
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されます)。