【发布时间】:2013-10-16 14:40:50
【问题描述】:
如何删除从其他对象引用的对象?示例:
Person person = new Person();
Payment payment = new Payment();
payment.setReceiverOfPayment(person);
dao.delete(person);
类:
class Person {
}
class Payment {
//optional
@OneToOne
private Person receiverOfPayment;
}
现在,如果我删除对象 person,我会遇到异常:
org.hsqldb.HsqlException: integrity constraint violation: foreign key no action;
FK_PAYMENT_RECEIVEROFPAYMENT_ID table: PAYMENT
这当然是因为某些付款可能仍然涉及人员。
在我删除一个人并手动清除引用之前,我是否必须在数据库中迭代我的所有付款?或者是否有任何级联(或类似)选项可以自动处理?
【问题讨论】:
-
你没有双向关系,所以不能使用JPA的Cascade。
-
如果要从 JPA 级联中获利,我必须对上述模型进行哪些更改?
-
@ManyToMany到List<Payment可能有效,但 Cascade 是由应用程序代码生成的,而不是由数据库生成的。您将收到每次付款的更新请求(如果 FK 可以为空)。
标签: java database hibernate jakarta-ee jpa