1

次のように、会社と製品など、親/子として2つのテーブルを設定しています-

会社のテーブル:-

company_id 、Company_name、creation_date

101、IBM、2010 年 5 月 12 日

製品表:-

company_id、Product_id、Product_name

101、1001、エクリプス

101、1002、DB2

新しい親子 (会社と製品) を保存することは問題ではありません。この問題は、ユーザーが会社のオブジェクトから製品を削除したときに発生します。

Company.java に次の製品マッピング情報があります。

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID",nullable=false)
@OrderBy(clause = "PRODUCT_NAME" )
@ForeignKey(name = "fk_company_product")     
private List<Product> products = new ArrayList<Product>();   

このマッピングにより、製品情報は適切に更新されていますが、会社の Bean から製品を削除して会社を保存すると、製品テーブルから製品情報が削除されません。

ご協力いただきありがとうございます。

4

1 に答える 1

4

カスケード削除は、親を削除した場合にのみ機能します。アノテーションを使用して削除を処理するには、次を使用する必要があります。

  1. JPA 2.0 を使用している場合:

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval=true)
    
  2. JPA 1.0 を使用している場合は、hibernate アノテーションを使用できます。

    @OneToMany(CascadeType.DELETE_ORPHAN)
    
于 2012-06-11T12:50:23.743 に答える