首頁 >Java >java教程 >為什麼沒有使用 JPA CascadeType.ALL 刪除孤立記錄?

為什麼沒有使用 JPA CascadeType.ALL 刪除孤立記錄?

Susan Sarandon
Susan Sarandon原創
2024-10-31 00:22:30303瀏覽

 Why Aren't Orphan Records Being Deleted with JPA CascadeType.ALL?

JPA CascadeType.ALL 不刪除孤兒

當使用JPA 與@OneToMany 映射且cascade = CascadeType.ALL 時,預計孤兒當父實體被刪除時,節點也會被刪除。但是,在某些情況下,孤立記錄可能會保留在資料庫中。

解決方案:

使用Hibernate:

如果使用Hibernate,可以將CascadeType.DELELETEP. ALL一起加入:

<code class="java">@OneToMany (cascade = {CascadeType.ALL, CascadeType.DELETE_ORPHAN}, fetch = FetchType.EAGER, mappedBy = "owner")
private List<Bikes> bikes;</code>

沒有Hibernate:

沒有Hibernate,孤立記錄必須是在刪除主記錄之前明確刪除:

  1. 取得要刪除的主行。
  2. 取得子元素。
  3. 刪除所有子元素。
  4. 刪除主行。
  5. 關閉會話。

JPA 2.0:

JPA 2.0 引入了orphanRemoval 標誌:

<code class="java">@OneToMany(mappedBy="foo", orphanRemoval=true)</code>

以上是為什麼沒有使用 JPA CascadeType.ALL 刪除孤立記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn