2009-08-12 141 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)是我可以給你的最好的。

希望能有所幫助。

相關問題