[英]Delete Inherited class JPA
我有一个定义如下的表:
@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 时如何先删除继承的类,以避免违反键约束错误?
谢谢你。
使用级联删除,删除子表实体将成功,它将删除子表和父表行。
@Entity
@DiscriminatorValue("BOOLEANVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class BooleanValueEvent extends Event {
...
}
@Entity
@DiscriminatorValue("EXACTVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class ExactValueEvent extends Event {
...
}
最后我解决了它。
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "typeName")
@JsonSubTypes({
@Type(value = BooleanValueEvent.class),
@Type(value = ExactValueEvent.class)
})
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name = "EVENT_TYPE")
public abstract class Event implements Cloneable, Serializable {
@Id
@GeneratedValue
private Long id;
...
}
和
@Entity
@DiscriminatorValue("BOOLEANVALUE")
public class BooleanValueEvent extends Event {
...
}
@Entity
@DiscriminatorValue("EXACTVALUE")
public class ExactValueEvent extends Event {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.