私は非常に基本的な多対多の関係を持っています:人とプロジェクト、次のように設定します:
人:
@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で可能な新しいプロジェクトを保存します。
これは1人で機能します。新しいプロジェクトを追加すると、Personとともに保存され、データベース内のテーブルが正しく更新されます。ただし、同じプロジェクトを別の人に追加すると、最初の人から削除されます。結合テーブルでは、最初の人のIDが2番目の人のIDに置き換えられます。
これの原因は何ですか?私の関係の設定は間違っていますか?