java - 如何使用 Hibernate 继承模型使 OnDelete CASCADE 工作
问题描述
家长:
@Entity
@Table(name = "Parent")
@Inheritance(strategy=InheritanceType.JOINED)
public class Parent {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
protected int id;
//some code here
}
孩子1:
@Entity
@Table(name="Child1")
@PrimaryKeyJoinColumn(name="id")
@OnDelete(action = OnDeleteAction.CASCADE)
public class Child1 extends Parent {
//some code here
}
我正在使用 Hibernate Mapping 在 MySQL 中制作表格。我对休眠完全陌生。正在创建表,并且子表还有一个引用父表 id 的外键,正如我提到的 @PrimaryKeyJoinColumn 注释。在子表中添加字段也会将其添加到父表中,因为它已被扩展。但是删除父表中的一行并不会删除子表行。也许我在这里某处采取了错误的方法。我的最终目标是扩展父级,并使用子表向其中添加记录。我需要一些指示。也许其他注释,实现目标的其他方式。
解决方案
我通过添加ON DELETE CASCADE
到子表的外键来解决这个问题。
参考:https ://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
例子:
CREATE TABLE parent (
id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (
id INT,
parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
推荐阅读
- flutter - 无序的颤动接触
- react-native-android - 如何修复三星a50上的反应本机应用程序闪烁错误?
- javascript - javascript倒数计时器用户输入
- javascript - R中的闪亮时间滑块问题 - 标记图标失真
- python - 我该如何解决?规范错误:不支持嵌套重命名器
- c++ - 为什么仅仅调用一个对象会做某事?
- utf-8 - 无法在 windows server 2016 中设置使用 Unicode Utf-8?
- python - Python函数代码修改以从用户输入中取整值
- c - 如何在不知道 ip 的情况下从 udp 连接设置多播?
- php - 将 WooCommerce 预订日期和时间添加到管理订单预览