2013-10-16 48 views
1

如何删除从其他对象引用的对象?例如:如何删除从其他对象引用的对象?

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

您没有双向关系,因此您无法使用JPA的Cascade。 –

+0

在上述模型中我需要更改哪些内容才能从JPA级联中获利? – membersound

+1

'@ ManyToMany'到'List

回答

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; 
} 

取决于你想要什么,一个多对一可能更重要。更多信息在Hibernate Documentation

相关问题