2009-08-12 103 views
0

我有一个Employee实体类(Id,Name,EmployeeType)。 EmployeeType实体(Id,Description)其中Description可以是REGULAR/MANAGER。如何做同一个实体之间的多对多关系

我很困惑如何映射REGULAR类型的雇员到他们相应的MANAGER类型雇员。我是否应该只为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

如果您想让一名员工只有一名经理,那么首先您要做的是多对一关系(非多对多),并将表中的ManagerEmployeeID设置为对同一个表的外键引用就好了。

如果要允许员工可​​能具有多个管理类型角色,请使用查找表。如果要指定一个特定的“角色”这些经理型的人,你也可以使用这个:VS谁知道

create table Supervisors (
    eid int, 
    sid int, 
    role varchar(16) 
); 

那么你可以使用角色为“主管”与“经理人”与“Slavedriver”什么。

对不起,我不知道任何JPA/Hibernate,所以概念(和伪SQL)是我可以给你的最好的。

希望能有所帮助。

相关问题