1
@Entity public class Organization {

@OneToMany 
List<A> Aobjects;


@OneToMany 
List<B> Bobjects;


@OneToMany 
List<C> Cobjects;

}

すべての @OneToMany メンバーに @OnDelete アノテーションがあります。親オブジェクトが削除されるとき、これらのオブジェクトが削除される順序はどうなりますか。オブジェクトが宣言されている順序であると想定しても安全ですか。

4

1 に答える 1

1

すべての @OneToMany メンバーに @OnDelete アノテーションがあります。親オブジェクトが削除されるとき、これらのオブジェクトが削除される順序はどうなりますか。オブジェクトが宣言されている順序であると想定しても安全ですか。

したがって、通常の Hibernate メカニズムではなく、削除時に SQL カスケード削除を使用しています。データベース メカニズムを使用しているので、オブジェクトが宣言される順序は問題ではないと言いたくなる (データベースは単にこの順序を認識していない)。データベースが物事を適切に処理することを期待するだけだ。

ただし、注釈からモデルを生成している場合、列の順序に影響を与える可能性がありますが、次のとおりです。

  • これが何らかの影響を及ぼし、すべてが非常に壊れやすく、使用できなくなるとしたら、私は非常に驚かれることでしょう。
  • Hibernate/JPA は、列の順序について何も述べていません (これは重要ではないため、上記を参照してください)。

しかし、B inturn に A への外部キー参照があり、削除時に A が失敗する場合、いくつかの問題に遭遇しました。

質問では、これは非常に関連性の高いIMOであることに言及する必要があります。私の答えは大まかですが、私が言ったように、データベース エンジンが物事を適切に処理することを期待しています。データベース エンジンには、それを行うために必要なすべてのメタデータがあります。しかし、私はデータベースの専門家ではないので、理論が何を言っているのかわかりません。

たぶん、次のような質問を見てください:

または、理論 (および特定のエンジンの実践) について質問してください。

于 2010-11-11T09:17:28.383 に答える