2013-10-16 50 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

相關問題