2

目標は、所有者が削除されたときにすべての扶養家族を削除することです。私は次のクラスを持っています:

@Entity
class Dependent {    
    @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY, optional = false)
    @Column(name = "OWNER")
    private Owner _owner;
}

@Entity
class Owner {
...
}

現在の実装では、所有者が削除された後も依存関係は存在します。

所有者にはDependentへのリンクがなく、変更できないため、@Dependentアノテーションまたはcascade=DELETEを使用できません。

JPAはそのような「逆依存」をサポートしていますか?もう1つの質問は、フィールド_ownerが削除されている間、optional ="false"は何を保証するのかということです。

4

2 に答える 2

0

この問題を解決する方法は、Owner と同じテーブルを共有するサブクラスを使用し、Dependent を指すコレクションを追加することです。「optional = false」に関するAaron Digullaの指摘には同意しません.

于 2009-12-31T02:25:16.283 に答える
0

2 つのオプションがあります。 を使用して、バッグ/セット/リストをクラスに追加する必要がありOwnerますcascade-delete。このバッグを遅延させてアクセスしないようにすることができるため、削除するまでパフォーマンスに影響を与えることはありません。

もう 1 つのオプションはDependent、所有者を削除するときにクエリを使用してインスタンスを削除することです。JPA はインスタンスの自動ガベージ コレクションを行わないため、とにかく手動で削除を開始する必要があります。そのため、every が単一の関数を使用して所有者を削除し、そこに子を削除する呼び出しを追加するようにしてください。

于 2009-12-28T15:00:41.910 に答える