java - 删除继承类 JPA

标签 java mysql hibernate jpa inheritance

我有一个定义如下的表:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name = "EVENT_TYPE")
public abstract class Event implements Serializable {
    @Id
    @GeneratedValue
    private Long id;
...
}

然后我有这个继承表:

@Entity
@DiscriminatorValue("BOOLEANVALUE")
public class BooleanValueEvent extends Event {
    ...
}

@Entity
@DiscriminatorValue("EXACTVALUE")
public class ExactValueEvent extends Event {
    ...
}

Hibernate 在数据库中创建了两个表,但是当我尝试在 JPA 上删除一个继承的对象时,它返回外键约束违规错误,因为它尝试删除第一个 Event 类。删除superClass时如何先删除继承的类,避免key constraint violation错误?

谢谢。

最佳答案

使用级联删除,删除 SubTable 实体会成功,并且会同时删除 subTable 和 parentTable 行。

@Entity
@DiscriminatorValue("BOOLEANVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class BooleanValueEvent extends Event {
    ...
}

@Entity
@DiscriminatorValue("EXACTVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class ExactValueEvent extends Event {
    ...
}

关于java - 删除继承类 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604621/

相关文章:

java - 不使用序列的数字主键;如何获取下一个值?

java - mkdirs() 已成功执行,但该文件夹在 Honor 9i 中不可见

mysql - 将嵌套 SELECT 重写为 INNER JOIN MySQL

php - MYSQL 中的序列

mysql - "IN"运算符颠倒了?那可能吗?

java - Bean创建异常, Autowiring 依赖注入(inject)失败

java - 如何在 Spring Boot 应用程序中使用 Hibernate Validation 进行 Bean 验证?

java - 圆长从 1004L 到 1000L(或 1006L 到 1010L)

java - 使用 Java 增强 C++ Eclipse

java - 插入子表时外键显示为空,错误无法将值 NULL 插入列中