2

これが双方向マッピングを行う正しい方法であるかどうか誰かに教えてもらえますか?

class User {
    @OneToMany(cascade=CascadeType.ALL, mappedBy="user")
    private List<item> items;
}


class Item {
    @ManyToOne
    private User user;
}

今、アイテムを削除しても、ユーザーを削除したくありません。ユーザーを削除する場合、そのユーザーに固有のアイテムであるため、関連するアイテムを削除する必要があります。

もう 1 つの質問: アイテムを作成する場合は、次のことを行います。

User user = new User();
Item item = new Item();

user.getItems().add(item);
item.setUser(user);
persist(item);

アイテムをユーザーに設定し、ユーザーをその逆にアイテムに設定する必要がありますか?

タイ

4

2 に答える 2

2
  1. はい、関係/マッピングには正しく注釈が付けられています。を削除してItemも、関連付けられているは削除されませんUser。aを削除すると、そのユーザーに関連付けられているUserすべてのものが削除されます。Item

  2. 少なくともデータベースに保存されている正しい情報を取得するという点では、自分で双方向にリンクする必要はありません(ただし、そうしても害はありません)。データベース操作がから(およびその逆ではないUser)にカスケードされるため、おそらく。の代わりに呼び出す必要があることに注意してください。のリストに追加する限り、これは自動的に持続します。 Itempersist(user)persist(item)itemuser

于 2012-04-11T00:26:01.657 に答える
0

それらを削除したくないが保存したい場合は、CascadeType.PERSISTまたはMERGEを使用します。

于 2012-04-11T00:26:31.850 に答える