RequestFactoryとJPAでOneToManyのエンティティを削除する

私は、RequestFactoryを使用してGWT内の1対多の関係から子供を削除する正しい方法が何であるか知りたいと思います。

製品と呼ばれるエンティティを持つ私のGWTアプリケーションは、その製品はエキスパートと1対多の関係を持っています:

@Entity
public class Product {
    ... 
    OneToMany(mappedBy="product", orphanRemoval=true,
              cascade={CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch=FetchType.EAGER)
    Set experts = new HashSet();
    ...
}

@Entity(name = "EXPERT")
public class Expert {
    ...
    @ManyToOne(optional=false)
    Product product;
    ...
}

私はProductの値を変更することができるユーザーインターフェイスを持っていますが、エキスパートを追加または削除できるウィンドウもあります。エキスパートを追加するとうまくいくが、エキスパートを削除するにはクライアントとサーバー側ではどのような管理を行う必要がありますか?

私は既に開かれた商品を持っています。

3
この質問は一般的にJPAに関連しているようですので、別の質問を追加しました: stackoverflow.com/questions/7945852
追加された 著者 Roalt,

1 答え

JPAの質問にも私は答えました。

私の過去の経験に基づいて、Hibernateで親子の双方向関係の子を削除することは非常に難しいことがあります。

私が通常行っているのは、代わりに単方向マッピングを使用することです。つまり、プロダクトは専門家のセットを保持しません。しかし、Hibernateコールを使用するすべてのエキスパートを取得するゲッターを実装できます。利点は次のとおりです。

  1. 簡単なマッピング
  2. 簡単なコーディング
  3. 管理可能な行動

あなたはいつでも戻って来て、後でキャッシングやeagerフェッチを実装することができます。ほとんどの場合、それらは不要な成熟前の最適化です。

0
追加された
私は最終的にはすべての作業を成功させることができましたが、あなたが言ったように、それは非常に扱いにくく、はっきりと見えますが、実際は難しいかもしれません。次のプロジェクトでは、実装が予想よりも困難(または制限的)であるため、より慎重に関係を選択します。
追加された 著者 Roalt,