これが明らかな場合は申し訳ありませんが、私たちはこれについて数日間頭を悩ませてきました。
親、子、Xの3つのエンティティについて考えてみます。
親は子と@OneToManyの関係を持ち、カスケード削除と孤立した削除=trueに設定されています。
子には親との@ManyToOne関係があり、オプション= falseです。さらに、関係は@NotNullであり、@JoinColumnにはnullable=falseがあります。
Xには、オプション=trueの子と@ManyToOneの関係があります。
親を削除したときに理想的に発生したいことは次のとおりです。削除をカスケードして、削除された親に対応するすべての子行を削除します。今のところ問題ありません。ただし、削除された子を参照するXには、子の関係を無効にする必要もあります。Xを削除するのではなく、関係を無効にするだけです。これは、「オプション」の関係であることと一致しています。
Hibernateでこれをどのように行うのですか?理想的には、これらの関係を無効にするためにビジネスロジックを「覚えておく」必要がないように、宣言型にする必要があります。実際、カスケードを使用する場合は、オプションの関係が無効になる前にカスケードのレベルが多くなる可能性があることを考えると、実際には宣言型である必要があります。
ヒントはありますか?私たちは困惑しています...。