我对管理关系中的实体感到困惑。根据PRO JPA2一书,关系应该在关系的两端手动配置和分配。
现在,考虑这种关系。
@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/德比/JPA2