我创建了两个实体,项目和员工。一个项目可以有多个员工,多个项目可以有多个员工,所以我选择了ManytoMany关系,如果有错请指正。因为我必须检索我工作的员工的所有项目以及属于一个项目的所有员工。示例实体类如下。
@Entity
@Table(name = "projects")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "project_employee", joinColumns = @JoinColumn(name = "project_id"), inverseJoinColumns = @JoinColumn(name = "employee_id"))
private Set<Employee> employee;
}
@Entity
@Table(name = "employees")
@Getter
@Setter
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(mappedBy = "employee")
@JsonBackReference
private Set<Project> project = new HashSet<Project>();
private String status;
}
假设有 2 个 id 为 1 的项目和 2 个 4 名员工的 id 为 1,2,3,4。
员工 1,2,3 是第一个项目的一部分 员工 2,3,4 是第二个项目的一部分。
员工 2 完成了第一个项目,因此应为第一个项目完成员工实体状态 员工 2 在第二个项目中被阻止,因此应为第二个项目阻止员工实体状态
所以我面临的问题是,如果我更新第一个项目的员工 2 状态,第二个项目也会出现同样的情况,反之亦然。
那么如何解决这个问题,我是否需要通过添加员工和项目映射来为状态创建单独的实体。