我对JPA有些怀疑。我有一个Employee表和Project表。当值保存在Employee和Project表中没有关系时。方案是第一个,管理员应该能够创建Employee和Project。后来的项目经理将每个员工分配到不同的项目。这里我如何将值写入名为employee_project_assignment的表?
employee_id project_id
----------- ----------
100 ABC987
100 DEF876
101 ABC987
102 DEF876
用户界面将采用以下方式。
当EmployeeProjectAssignment表单出现时,项目经理从下拉列表中选择来自不同项目的一个项目。他选择了他想要参与该项目的多名员工。在这 办法。那么如何为这个EmployeeProjectAssignment表单创建实体呢?
答案 0 :(得分:3)
上表是一个纯连接表,用于实现Employee和Project之间的ManyToMany关联。
Employee实体可以有一个Projects集合,和/或Project实体可以有一个Employees集合(即关系可以是从Employee到Project的单向关系,也可以是从Project到employee的单向关系,或者是双向的)。
决定哪种关联更适合您的需求(一般来说,双向关联可以让生活更轻松)。如果是双向的,则选择哪一方是关联的所有者(所有者方具有@JoinTable注释,另一方具有mappedBy属性),然后在表单处理方法中填充集合。拥有方是JPA必须填充以保持关联的一方。
假设拥有方是员工:
employee.getProjects().clear();
employee.getProjects().addAll(projectsSelectedByAdministrator);