関係のエンティティを管理することについて混乱しています。書籍PROJPA2によると、関係は手動で構成し、関係の両端に割り当てる必要があります。
ここで、この関係について考えてみましょう。
@Entity
public class Employee {
..
@ManyToOne(cascade=CascadeType.PERSIST)
private Department department;
..
}
@Entity
public class Department {
..
@OneToMany(mappedBy="department")
private Set<Employee> employees = new HashSet<Employee>();
public void addEmployee(Employee e){
getEmployees().add(e);
e.setDepartment(this);
}
}
これを検証するために、このコード行を含む簡単なテストケースを作成しました。
Department dept1 = new Department();
dept1.setName("MARKETING");
Employee e1 = new Employee();
e1.setName("JOHN DOE");
e1.setDepartment(dept1); //[1]
//dept1.addEmployee(e1); //[2]
行[1]を検討してください。
これでは正しい部門IDでEmployeeテーブルが適切に更新されないと思いましたが、Derbyをチェックすると、更新を適切に実行できます。
行[2]を検討してください。
これは本によると適切な方法です。
Eclipselink / Derby / JPA2