簡體   English   中英

休眠OneToMany級聯

[英]Hibernate OneToMany cascade

我創建了兩個具有OneToMany關系的實體,但是當我從數據庫中手動刪除父級時,子級仍然存在。 我嘗試了不同的解決方案,但似乎沒有任何效果。 我究竟做錯了什么?

@Entity
@Table(name = "PARENT")
public class Parent implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id;

    @OneToMany(cascade = CascadeType.PERSIST, orphanRemoval = true)
    @JoinColumn(name = "parent_id")
    public List<Child> children = new ArrayList<Child>();
}

@Entity
@Table(name = "CHILD")
public class Child implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer id;

}

我嘗試了以下類似的解決方案,但是由於某些原因,當我通過命令手動刪除父項時,子項在刪除父項后仍然保留。

從數據庫中級聯和孤立刪除之間有什么區別?

我建議您可以重新檢查數據庫表。 “ CHILD”表中應有一個“ PARENT_ID”列。 通過提供與您的數據庫有關的外鍵違反錯誤,可以防止刪除父級而不刪除相應的子級。

請檢查數據庫中表PARENT和CHILD的表結構。 在CHILD表中以及在delete級聯屬性集上應該有一個對parent_id的外鍵引用。

根據您的模型,子代與父代之間沒有關系,因此刪除父代不會級聯子代。 您可以通過從子級到父級添加@ManyToOne關系來創建雙向關系,也可以從子級指定單向@ManyToOne關系后使用@OnDelete(action = OnDeleteAction.CASCADE)屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM