我有以下場景:有公司和員工。每家公司都有一組員工。每個員工都可以爲幾家公司工作。所以,我實現了以下關係式:休眠兩個父母一個孩子映射
Company.class:
@JoinTable(name = "company_employee", joinColumns = @JoinColumn(name = "company_id") , inverseJoinColumns = @JoinColumn(name = "employee_id"))
@ManyToMany(fetch = FetchType.LAZY)
private List<Employee> employees;
Employee.class:
@JoinTable(name = "company_employee", joinColumns = @JoinColumn(name = "employee_id") , inverseJoinColumns = @JoinColumn(name = "company_id"))
@ManyToMany(fetch = FetchType.LAZY)
private List<Company> companies;
顯然,爲幾家公司工作,每個員工應該有分配給幾個不重疊的時間表他或她工作的每個公司。 此外,每個組合公司員工都應該有一個時間表列表,因爲有時舊時間表會過期,新時間表會生效。 所以我也有Schedule.class
,這是應該有child to parent @ManyToOne
關係既Company
和Employee
,並應工作方式如下:各Schedule
,因此List<Schedule>
應該對應Company
和Employee
實例只有一個組合。 如何實現這種關係?
更新1
我只記住添加@OneToMany Schedule
關係到每個Company
和Employee
,但後來我需要把的Schedule
兩個實例來Company
和Employee
每一次,而這種方式就是不看起來不錯,現在對我來說也不明顯,如何取回它。 所以任何幫助將不勝感激。
這個職位是更新,以顯示實際生活的場景我有,不只是通用ENTITY1,ENTITY2,ENTITY3名字的類。
更新2
我接受了答案,但我不能使用它,如果計劃包含列表。 根據我的計劃,Schedule
應該包含List<Vacation>
以瞭解一年以上的Vacations
和List
的Days
,它們中的每一個都顯示特定的星期幾,休息時間和當天結束的開始。那些Days
對於每個Schedule
實例也是唯一的。
它應該是像下面的東西,但顯然現在我沒有schedule_id
,所以如何將這些列表連接到Schedule
?
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "schedule_id")
private List<Vacation> vacations;
@JoinTable(name = "schedule_week", joinColumns = @JoinColumn(name = "schedule_id") , inverseJoinColumns = @JoinColumn(name = "day_id"))
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Day> week;
如何將這些列表包含在內?
如果添加真實場景會更好。該解決方案可能與休眠不相關,但設計更改。 –
@tharindu_DG我編輯了我的帖子以顯示真實場景。大概你是對的,希望它使事情更清楚。 –