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

问题描述 投票:2回答:1

父母:

@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的外键。在子表中添加字段还会将其扩展到父表中。但是删除父表中的行不会删除子表中的行。也许我在某处采取了错误的方法。我的最终目标是扩展父级,并使用子表向其添加记录。我需要一些指示。也许还有其他注释,也有达到目标的其他方法。

java mysql hibernate hibernate-mapping
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.