我有一名员工可以在多个部门工作。我在 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