2

Hibernate バージョン: 4.0.1.Final / JPA

こんにちは、

切り離されたテーブルをマージしたい。entityManager.merge() の実行後、すべての子テーブルがデータベースから選択されます。

子テーブルには、parentTable で次の注釈が付けられます。

@OneToMany(fetch = FetchType.LAZY, mappedBy = "parentTable")

カスケード アノテーションはありません。マージ時に子テーブルをカスケードしたくありません。マージ時にカスケードを無効にするにはどうすればよいですか?

@Transactional
public void save() {
    entityManager.merge(parentTable); //cascades child´s here
}

以前にフェッチされた子テーブルのみが再選択されます。

ありがとう

4

1 に答える 1

0

デフォルトでは、すべてのカスケードが無効になっています。何もカスケードしたくない場合は、カスケード属性を @OneToMany アノテーションに追加しないでください。

一方、マージ以外のすべてをカスケードする場合は、次を使用します。

@OneToMany(fetch = FetchType.LAZY, 
           mappedBy = "parentTable" 
           cascade = {CascadeType.DETACH, CascadeType.PERSIST, 
                      CascadeType.REFRESH, CascadeType.REMOVE})

カスケード マージ操作とは関係のない他の問題が発生している可能性があります。その場合、エンティティと、それらを作成およびマージするコードがどのように役立つかを示します。

于 2012-07-27T08:58:29.243 に答える