JPA CascadeType.ALL が孤立を削除しない
cascade = CascadeType.ALL を指定した @OneToMany マッピングで JPA を使用する場合、孤立することが予想されます親エンティティが削除されると、ノードも削除されます。ただし、場合によっては、孤立したレコードがデータベースに残ることがあります。
解決策:
Hibernate の場合:
場合Hibernate を使用すると、CascadeType.DELETE_ORPHAN アノテーションを CascadeType.ALL と組み合わせて追加できます:
<code class="java">@OneToMany (cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN}, fetch = FetchType.EAGER, mappedBy = "owner") private List<Bikes> bikes;</code>
Hibernate を使用しない場合:
Hibernate を使用しない場合、孤立レコードはメインレコードを削除する前に明示的に削除します:
JPA 2.0:
JPA 2.0 では、orphanRemoval フラグが導入されています。
<code class="java">@OneToMany(mappedBy="foo", orphanRemoval=true)</code>
orphanRemoval = true を指定すると、親エンティティが削除されるときに、手動で削除する必要なく、孤立したレコードが削除されます。
以上がJPA CascadeType.ALL で孤立レコードが削除されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。