Item と Category の間に @ManyToMany (双方向) の関係があります。
class Item {
@ManyToMany(cascade = CascadeType.ALL)
Collection<Category> categories=new ArrayList<Category>();
}
class Category {
@ManyToMany(mappedBy="categories", cascade = CascadeType.ALL)
Collection<Item> items=new ArrayList<Item>();
}
両方に CascadeType.ALL を指定しました。アイテムは所有者です。ManyToMany 関係は、3 番目のテーブル (Item_Category) を使用してマップされます。
アイテムを作成し、そのアイテムにカテゴリを追加してアイテムを保存すると、そのアイテム内のすべてのカテゴリが保持されます。また、結合テーブルに必要なエントリが作成されます (予想どおり)。
ただし、カテゴリを作成して新しいアイテムを追加し、カテゴリを保存すると、必要なエントリがアイテム テーブルとカテゴリ テーブルに作成されますが、Item_Category 結合テーブルには挿入されません。その結果、関連付けが正しく作成されません。
これは予想される動作ですか?アイテムが関係の所有者であるため、アイテムにカテゴリを追加した場合にのみ、関連付けテーブルにエントリが含まれることを意味しますか?