2016-02-17 55 views
0

em.merge()更新實體的初始化屬性設置爲null ..EntityManager的合併功能設置obect的非定值設置爲null

@PersistenceContext 
public EntityManager em; 

    em.merge(invoice); 
在我的數據庫

正在更新其設定的所有值在發票對象中, 以及它正在將其他人更新爲null,如發票對象那些值爲空。

它的替代方法是什麼,以便我只更新對象設置值。

+0

的[設定一些字段的值使用JPA爲空(http://stackoverflow.com/questions/3870248/setting-values-of-some-fields-to-null-using-jpa) – Pablo

+0

的可能的複製對象在傳遞到合併時處於什麼狀態? 「其他」字段是什麼狀態?在分離之前加載?卸載?一些實現跟蹤什麼是分離加載,但也許你的實現不 –

回答

0

合併通過首先從您的數據庫中選擇您要合併的實體(在本例中爲發票)並檢查每個字段的變化。如果它們現在爲空,它們將被設置爲空。

解決此問題的一種方法是傳遞完整實體或手動選擇,並設置唯一需要修改的字段。

+0

謝謝克雷姆森,我從DB獲取實體,然後設置值,我想設置..現在它工作.. –