2014-09-23 61 views
0

我有一個數據庫模型類Project,並且有兩個嵌入對象的字段:創建一個新的對象,如果當前字段爲空數據庫

@Embedded 
public ContacterInfo contacter = new ContacterInfo(); 

@Embedded 
public CompanyInfo company = new CompanyInfo(); 

「因爲我不想要檢查is null每次我使用companycontacter,所以我決定無論如何創建它們。

我的預期是,當數據庫中沒有任何數據時,Java會爲我創建一個新的ContacterInfo,然後我可以將它用於新數據。但實際上,我發現contacter仍然可以設置爲null。我懷疑JPA從數據庫加載null,並用它覆蓋我的新創建對象。

我該如何解決這個問題?

+1

如果ContacterInfo爲空,則應該在'contacter'的setter中放置'contacter = new ContacterInfo();'。 – lxcky 2014-09-23 06:46:39

回答

3

您可以使用JPA實體監聽器ObjectDB has a good explication)。舉例:

@PostLoad 
void onPostLoad() { 
    if (contacter == null) { 
     contacter = new ContacterInfo(); 
    } 
    if (company == null) { 
     company = new CompanyInfo(); 
    } 
} 

每次JPA加載當前實體的一個實例,onPostLoad將被調用。

祝你好運!

相關問題