2012-04-11 4 views
2

誰かがこれが双方向マッピングを行う正しい方法かどうか教えてもらえますか?双方向マッピングは正しく行われましたか?

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


class Item { 
    @ManyToOne 
    private User user; 
} 

ここでアイテムをデリートすると、ユーザーを削除したくありません。 ユーザーを削除すると、そのユーザーが一意であるため、関連するアイテムを削除します。

そして、別の質問:私は項目を作成した場合、私は:

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

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

は、私は、ユーザーに項目を設定し、アイテムへのユーザその逆に、両方持っていますか?

TY

答えて

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

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

0

削除する必要はなく保存したい場合は、CascadeType.PERSISTまたはMERGEを使用します。

関連する問題