Java Hibernate继承模型的级联删除

Java Hibernate继承模型的级联删除,java,hibernate,postgresql,jpa,cascade,Java,Hibernate,Postgresql,Jpa,Cascade,我有一个定义如下的表: @Entity @Table @Inheritance(strategy=InheritanceType.JOINED) public class Table implements Serializable { @Id @GeneratedValue private Long id; ... } @实体 @桌子 @继承(策略=InheritanceType.JOINED) 公共类表实现

我有一个定义如下的表:

@Entity @Table @Inheritance(strategy=InheritanceType.JOINED) public class Table implements Serializable { @Id @GeneratedValue private Long id; ... } @实体 @桌子 @继承(策略=InheritanceType.JOINED) 公共类表实现了可序列化{ @身份证 @生成值 私人长id; ... } 然后我有一个继承的表:

@Entity @Table public class SubTable extends Table { ... } @实体 @桌子 公共类子表扩展表{ ... } Hibernate在我的Postgres数据库中正确地创建了两个表,但它将两个表之间的on delete操作定义为“NO action”


如何在Hibernate中定义我希望在删除时定义级联操作?例如,当我手动从表中删除一行时,我希望自动获取表子表中要删除的对应行。当我现在尝试从表中删除一行时,它会返回外键约束冲突错误。

如果您总是使用Hibernate来执行删除,则Hibernate可以处理级联删除

因此,删除子表实体将成功,它将同时删除子类表记录和关联的基类行

如果要使用SQL级别的删除,假设使用的是hbm2ddl(),则需要使用@OnDelete注释注释
子表

@Entity
@Table
@OnDelete(action = OnDeleteAction.CASCADE)
public class SubTable extends Table {
    ...
}

如果您总是使用Hibernate来执行删除,则Hibernate可以处理级联删除

因此,删除子表实体将成功,它将同时删除子类表记录和关联的基类行

如果要使用SQL级别的删除,假设使用的是hbm2ddl(),则需要使用@OnDelete注释注释
子表

@Entity
@Table
@OnDelete(action = OnDeleteAction.CASCADE)
public class SubTable extends Table {
    ...
}