我有一位員工可以在多個部門工作。我在 Employee 中有 OneToMany 關係,在 Department 類別中有 ManyToOne。
@Entity public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Size(min = 3, max = 10, message = "Invalid name") private String name; @Email private String email; @OneToMany(mappedBy = "employee") private List<Department> departments; } @Entity public class Department { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String department; @JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "employee_id", referencedColumnName = "id") private Employee employee; }
在 MySQL 中建立的表格如下所示:
問題是我將有多名員工,他們可以有多個部門。部門表將太大,不同員工的部門名稱將重複,如上圖所示,我有 2xManagement。我的問題是是否可以建立沒有employee_id(僅具有部門名稱)的部門表,並在僅具有兩個屬性(employee_id 和department_id)的單獨表中進行連結。我需要為此創建一個新課程嗎?我怎樣才能優化這種關係?有辦法做到嗎?
您需要使用弱實體將解決方案變更為@ManyToMany, 參考文獻: https://www.baeldung.com/hibernate-many-to-many