我有一个非常基本的多对多关系:人员和项目,设置如下:
人:
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "person_project",
joinColumns = @JoinColumn(name = "Person_Id"),
inverseJoinColumns = @JoinColumn(name = "Project_id"))
private Set<Project> projects = new HashSet<Project>();
项目:
@ManyToMany
@JoinTable(name = "person_project",
joinColumns = @JoinColumn(name = "Project_Id"),
inverseJoinColumns = @JoinColumn(name = "Person_id"))
private Set<Person> persons = new HashSet<Person>();
更新人员时,可能会指定新项目。我为 Person 设置了 JPARepository,我使用 saveAndFlush(...) 来保存 Person 可能的新项目。
这适用于一个人。如果我添加一个新项目,它将与 Person 一起保存,并且数据库中的表会正确更新。但是,如果我随后为另一个人添加相同的项目 - 它将从第一个人中删除!连接表中第一个人的 id 被替换为第二个人的 id。
这是什么原因造成的?我的关系设置不正确吗?