如何使用Hibernate继承模型使OnDelete CASCADE工作

时间:2019-08-26 07:42:02

标签: java mysql hibernate hibernate-mapping

父母:

@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
}

Child1:

@Entity  
@Table(name="Child1")   
@PrimaryKeyJoinColumn(name="id")
@OnDelete(action = OnDeleteAction.CASCADE)
public class Child1 extends Parent {
        //some code here
}

我正在使用Hibernate Mapping在MySQL中创建表。 我对Hibernate绝对陌生。正如我已经提到的@PrimaryKeyJoinColumn批注一样,正在创建表,并且子表也具有引用父表ID的外键。 在子表中添加字段还会将其扩展到父表中。 但是删除父表中的行不会删除子表中的行。 也许我在某处采取了错误的方法。 我的最终目标是扩展父级,并使用子表向其添加记录。 我需要一些指示。也许有其他注释,也有实现目标的其他方法。

1 个答案:

答案 0 :(得分:0)

我通过在子表的外键中添加 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;