我有一个定义如下的表:
@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/