0

一方向休止状態マッピングで親を削除するベスト プラクティスは何ですか? (私はJPAを使用しています)

Parent: 
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
private List<Child> children= new ArrayList<Child>();

Child:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "fk_parent")
private Parent parent;

ここでは子が関係の所有者であり、子が関連付けられている親を削除したいと考えています。どうすれば達成できますか?続けて、親から子を 1 つずつ繰り返して削除するか、他の方法が存在する必要があります。残念ながら、休止状態のドキュメントでの削除については何も見つかりませんでした。

4

2 に答える 2

0

おやおや!問題が見つかりました。カスケードとは関係ありませんが、カスケードが必要でした。問題は、子を親に追加して削除する方法にありました。要約すると:

親で保存を実行して関連付けを作成すると:

parent.addChild(child)  
em.save(parent)

次に、削除中に親から操作する必要があります。または、子を次のように追加すると

child.setParent(parent)
em.save(child)

次に、子を操作して削除する必要があります。

于 2012-06-21T11:46:27.190 に答える
0

実際、あなたの関連付けは双方向であり、一方向ではありません...

親が削除されたときに子を削除することが目標である場合、必要なのは

@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private List<Child> children= new ArrayList<Child>();

em.remove(parent);
于 2012-06-20T13:49:39.053 に答える