1. ホーム
  2. ハイバーネート

[解決済み】JPA orphanRemoval=trueとON DELETE CASCADE DML句との相違点

2022-04-10 12:39:19

質問

JPA 2.0について少し混乱しています。 orphanRemoval 属性があります。

JPAプロバイダのDB生成ツールを使って基礎となるデータベースのDDLを作成する際に必要であることがわかると思うのですが、その際に ON DELETE CASCADE を特定のリレーション上で使用することができます。

しかし、DBが存在し、そのDBにすでに ON DELETE CASCADE をリレーション上で使用する場合、適切に削除をカスケードするのに十分ではないのでしょうか?この場合 orphanRemoval を追加してください。

乾杯

解決方法は?

orphanRemoval とは何の関係もありません。 ON DELETE CASCADE .

orphanRemoval は、完全に ORM特有のもの . 例えば、親エンティティの対応するコレクションから子エンティティを削除したときなど、親エンティティから参照されなくなったときに "child" エンティティを削除するようマークします。

ON DELETE CASCADE データベース固有のもの 親行が削除されると、データベース内の子行も削除されます。