2012-04-27 42 views
6

我正在使用Hibernate和JPA。我有一個名爲Customer引用一個ParentCustomer實體:如果沒有找到實體的空對象

public class Customer { 
    @Id 
    @GeneratedValue 
    @Column(name = "CustomerID") 
    private int id; 

    @ManyToOne 
    @JoinColumn(name = "ParentCustomerID") 
    private Customer parent; 

    // ... 
} 

但在我的分貝也有一些客戶因此ParentCustomerID設置爲0有沒有父。當我測試我的課,我得到的例外是:

javax.persistence.EntityNotFoundException: Unable to find it.keyforup.pat.data.entities.Customer with id 0

有沒有一種方法來設置ParentCustomernull當id爲0

+3

你爲什麼說0?如果您希望實體爲null,那麼外鍵值應該爲null。 – 2012-04-27 08:23:20

+0

我正在處理由第三方應用程序使用的數據庫,此應用程序在客戶沒有父級時將父級ID設置爲0 ...所以我會確保每次找不到父級父級'property被設置爲null。 – davioooh 2012-04-27 08:27:08

+1

但是,這不是合法的數據庫行爲。此外,如果暗示嚴格的數據庫限制驗證,他們甚至不能這樣做.. – 2012-04-27 08:30:51

回答

19

試試這個

@ManyToOne 
@JoinColumn(name = "ParentCustomerID") 
@NotFound(action = NotFoundAction.IGNORE) 
private Customer parent; 
+0

這是建議在我張貼的確切副本。 – 2012-04-27 08:56:04

+0

當它發生時,我已經在過去遇到過這個問題,並且用未找到的註釋解決,所以當我看到這個線程時 - 它曾經在跑步機上 - 決定在有人毆打我之前馬上發佈答案。第一手沒有看到重複的帖子 - 良好的通話。 – Bitmap 2012-04-27 09:01:27

相關問題