如何使用休眠继承模型使 OnDelete 级联工作



父级 :

@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映射在MySQL中制作表。 我绝对是Hibernate的新手。正在创建表,并且子表还有一个引用父表 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;

最新更新