我有一个带有(Id,Name,EmployeeType)的Employee实体类。 EmployeeType实体(Id,Description)其中Description可以是REGULAR / MANAGER。
我对如何将REGULAR类型的Employe映射到相应的MANAGER类型Employees感到困惑。我是否应该向Employee实体本身添加一个额外的字段,以便它现在变为(Id,Name,EmployeeType,ManagerEmployeeId)?或者我应该有一个查找表Employee_Manager(Id,RegularEmployeeId,ManagerEmployeeId)?
我正在考虑使用Employee_Manager查找表,我不确定该实体类的外观。以下是我的想法。我在这里走在正确的轨道上吗?
@Entity
@Table(name="EMPLOYEE")
public class Employee{
@Id
int id;
@Column(name="NAME")
String name;
@ManyToMany(mappedBy = "regularEmployee")
Collection<Employee> regularEmployee
@ManyToMany
Collection<Employee> managerEmployee;
}
PS。我使用JPA和Hibernate作为持久性提供程序。
答案 0 :(得分:0)
如果你想让一个员工只有一个经理,那么首先你要做的是多对一的关系(不是多对多),并且将表中的ManagerEmployeeID作为外国人对同一个表的关键引用就好了。
如果要允许员工具有多个管理类型角色,请使用查找表。如果要为这些经理类型的人分配特定的“角色”,也可以使用此选项:
create table Supervisors (
eid int,
sid int,
role varchar(16)
);
然后你可以使用“Supervisor”vs“Manager”vs“Slavedriver”vs谁知道什么角色。
抱歉,我不知道任何JPA / Hibernate,所以概念(和伪SQL)是我能给你的最好的。
希望有所帮助。