JPA实体设计建议

时间:2012-03-04 06:47:02

标签: java jpa jpa-2.0

我对JPA有些怀疑。我有一个Employee表和Project表。当值保存在Employee和Project表中没有关系时。方案是第一个,管理员应该能够创建Employee和Project。后来的项目经理将每个员工分配到不同的项目。这里我如何将值写入名为employee_project_assignment的表?

employee_id project_id
----------- ----------
100     ABC987
100     DEF876
101     ABC987
102     DEF876

用户界面将采用以下方式。

当EmployeeProjectAssignment表单出现时,项目经理从下拉列表中选择来自不同项目的一个项目。他选择了他想要参与该项目的多名员工。在这 办法。那么如何为这个EmployeeProjectAssignment表单创建实体呢?

1 个答案:

答案 0 :(得分:3)

上表是一个纯连接表,用于实现Employee和Project之间的ManyToMany关联。

Employee实体可以有一个Projects集合,和/或Project实体可以有一个Employees集合(即关系可以是从Employee到Project的单向关系,也可以是从Project到employee的单向关系,或者是双向的)。

决定哪种关联更适合您的需求(一般来说,双向关联可以让生活更轻松)。如果是双向的,则选择哪一方是关联的所有者(所有者方具有@JoinTable注释,另一方具有mappedBy属性),然后在表单处理方法中填充集合。拥有方是JPA必须填充以保持关联的一方。

假设拥有方是员工:

employee.getProjects().clear();
employee.getProjects().addAll(projectsSelectedByAdministrator);