gpt4 book ai didi

hibernate - JPA实体关系: Cascade on delete

转载 作者:行者123 更新时间:2023-12-03 06:47:10 24 4
gpt4 key购买 nike

我正在使用 spring、JPA 和 Hibernate。

我得到了以下实体:

@Entity
@Table(name = "Supplier")
public class Supplier {

@Id
@Column(name = "Supplier_ID", nullable = false)
private Integer supplierId;

...
}

并且,

@Entity
@Table(name = "Product")
public class Product {

@Id
private Integer productId;

@ManyToOne(cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "Supplier_ID")
private Supplier supplier;

...
}

现在,我的问题是,使用给定的架构

  1. 当我从子项(即产品)中删除一行时,供应商也会被删除吗?
  2. 或者,只有当父级(即供应商)被删除时,才会级联删除所有子“产品”

谢谢。

最佳答案

当供应商因 OnDelete 注释而被删除时,该产品也会被删除。

仅当模式由 Hibernate 生成时才使用 OnDelete 注释。它在数据库中配置外键,以便当删除引用的行时,包含外键的行也会被删除。

参见http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-hibspec-singleassoc

但是当您删除产品时,Hibernate 也会删除供应商(这可能不是您想要的),因为关联上设置了 CascadeType.ALL。您应该删除此属性:当供应商的产品之一被删除时,没有理由删除该供应商。

关于hibernate - JPA实体关系: Cascade on delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10913715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com