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
を強制的に削除するのが合理的です。私は正しいですか?Employees
Department
ただし、関係の所有者はEmployee
. したがって、私の質問は、cascadeType.PERSIST
. 特別なニーズに応じて、両面のどちらかを選択できますか、それとも両方に配置できますか? 横に置いた場合、 がリレーションの所有者であることを考慮してDepartment
、次のコードは も保存しますか?Employees
Employee
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
されます)。