これは一般的なシナリオだと思います。Hibernateに1対多のマッピングがあるとしましょうCategory
:Items
カテゴリー:
@OneToMany(
cascade = {CascadeType.ALL},fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
@Cascade(
value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN
)
private List<Item> items;
アイテム:
@ManyToOne(targetEntity=Category.class,fetch=FetchType.EAGER)
@JoinColumn(name="category_id",insertable=false,updatable=false)
private Category category;
すべて正常に動作します。私はのライフサイクルCategory
を完全に制御するために使用します。Item
しかし、更新するコードを書いているときはCategory
、まずCategory
DBから抜け出します。次に、それをUIに渡します。ユーザーは、変更された値を入力しCategory
て返します。ここで問題が発生します。Category
情報を渡すだけで、ではないためItems
、Items
コレクションは空になります。を呼び出すとsaveOrUpdate
、すべての関連付けが消去されます。
これに対処するための最善の方法について何か提案はありますか?Category
制御することの利点はItems
、順序を簡単に維持できることItems
と、双方向で混乱しないことだと思います。
Category
しかし、自分自身を更新したい状況はどうですか?最初にロードしてマージしますか?