GoogleアプリケーションエンジンのJava jpa one to manyを削除

Google App EngineのJava jpa 1から多くのリレーションまで、どのように子要素を削除しますか? 例えば

Class Parent{
  //key defined here

   @OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
   private List childs = null;
.
.
.
}

Class child{
//key defined here too
@ManyToOne
private Parent parent;
.
.
.
}

わたしは作った

Parent parent=new Parent()
parent.getChilds().add(new Child(1));
parent.getChilds().add(new Child(2));
//save parent 
.
.

今私は子供1と2の両方を削除し、新しい子供3を追加したい

Parent p=//getParent
p.setChilds(new ArrayList())//remove all older childs
parent.getChilds().add(new Child(3));//adding new child 3
.
.

しかし、私は再び同じ親をフェッチするとき、私はすべての3つの子が、子供3だけではありません。

誰も私を導くことができます。

ありがとう、 Ramesh.V

5

2 答え

おそらくやる

parent.getChilds().clear();

それはリストの削除と再作成を節約し、いくつかのGAE問題を回避するという追加の利点があるからです。 PS。複数の「子供」は「子供」です!

0
追加された
申し訳ありませんが動作しています...しかし、新しい空のオブジェクトをクリアまたは設定することは、いくつかの作業で違いはありません...
追加された 著者 Ramesh V,

あなたは所有側(この場合はChild#parent)から関係を削除することができます。したがって、親コレクション内の各子は、子要素を削除するか、親要素をnullに設定してください。何かのようなもの:

Parent p = //getParent
List children = p.getChildren();
for (Child c : children) {
    c.setParent(null);
}

children.clear();
children.add(new Child(3));
0
追加された