如何删除从其他对象引用的对象?例如:
Person person = new Person();
Payment payment = new Payment();
payment.setReceiverOfPayment(person);
dao.delete(person);
类:
class Person {
}
class Payment {
//optional
@OneToOne
private Person receiverOfPayment;
}
现在,如果我删除了对象人,我会遇到异常:
org.hsqldb.HsqlException: integrity constraint violation: foreign key no action;
FK_PAYMENT_RECEIVEROFPAYMENT_ID table: PAYMENT
这当然是因为某些付款可能仍然提及人。
在删除某人并手动清除参考之前,我是否必须在数据库中迭代所有付款?或者是否有任何可以自动处理此问题的级联(或类似)选项?
答案 0 :(得分:1)
将付款字段添加到您的Person对象。您需要双向关系才能使用Cascade。
这样的事情:
@Entity
public class Payment {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="myColumn")
private Person receiverOfPayment;
}
@Entity
public class Person {
@OneToOne(mappedBy="receiverOfPayment")
private Payment payment;
}
根据您的需要,ManyToOne可能更具相关性。有关Hibernate Documentation的更多信息。