[英]Delete Inherited class JPA
I have a table defined as this:我有一个定义如下的表:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name = "EVENT_TYPE")
public abstract class Event implements Serializable {
@Id
@GeneratedValue
private Long id;
...
}
Then I have this inherited tables:然后我有这个继承的表:
@Entity
@DiscriminatorValue("BOOLEANVALUE")
public class BooleanValueEvent extends Event {
...
}
@Entity
@DiscriminatorValue("EXACTVALUE")
public class ExactValueEvent extends Event {
...
}
Hibernate creates two table in database, but when I try to delete on JPA an inherited object it returns foreign key constraint violation error, because It try to delete first Event
class. Hibernate 在数据库中创建了两个表,但是当我尝试在 JPA 上删除一个继承的对象时,它返回外键约束冲突错误,因为它尝试删除第一个
Event
类。 How can I delete inherited class first when I delete superClass in order to avoid key constraint violation error?删除 superClass 时如何先删除继承的类,以避免违反键约束错误?
Thank you.谢谢你。
Using cascade delete , removing a SubTable entity will succeed and it will remove both the subTable and the parentTable rows.使用级联删除,删除子表实体将成功,它将删除子表和父表行。
@Entity
@DiscriminatorValue("BOOLEANVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class BooleanValueEvent extends Event {
...
}
@Entity
@DiscriminatorValue("EXACTVALUE")
@OnDelete(action = OnDeleteAction.CASCADE)
public class ExactValueEvent extends Event {
...
}
Finally I solved it with.最后我解决了它。
@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;
...
}
And和
@Entity
@DiscriminatorValue("BOOLEANVALUE")
public class BooleanValueEvent extends Event {
...
}
@Entity
@DiscriminatorValue("EXACTVALUE")
public class ExactValueEvent extends Event {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.