有什么方法可以使用 JPA 优化 ManyToOne 关系吗?
Is there any way to optimize ManyToOne Relationship using JPA?
我有一名员工可以在多个部门工作。我在部门 class.
的 Employee 和 ManyToOne 中有 OneToMany 关系
@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 中创建的 table 如下所示:
- 员工table:
- 部门table:
问题是我会有多个员工,他们可以有多个部门。部门 table 太大,部门名称将针对不同的员工重复,如上图所示,我有 2xManagement。我的问题是是否可以在没有 employee_id 的情况下创建部门 table(仅具有部门名称)并在单独的 table 中进行链接,只有两个属性 - employee_id 和 department_id。我需要为此创建一个新的 class 吗?我怎样才能优化这种关系?有办法吗?
您需要使用弱实体更改@ManyToMany 的解决方案,
参考资料:https://www.baeldung.com/hibernate-many-to-many
我有一名员工可以在多个部门工作。我在部门 class.
的 Employee 和 ManyToOne 中有 OneToMany 关系@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 中创建的 table 如下所示:
- 员工table:
- 部门table:
问题是我会有多个员工,他们可以有多个部门。部门 table 太大,部门名称将针对不同的员工重复,如上图所示,我有 2xManagement。我的问题是是否可以在没有 employee_id 的情况下创建部门 table(仅具有部门名称)并在单独的 table 中进行链接,只有两个属性 - employee_id 和 department_id。我需要为此创建一个新的 class 吗?我怎样才能优化这种关系?有办法吗?
您需要使用弱实体更改@ManyToMany 的解决方案, 参考资料:https://www.baeldung.com/hibernate-many-to-many