2012-03-28 35 views
0

我想知道如何使用EclipseLink更新表中的列。 我嘗試使用EntityManager.merge(myObject);,但後來EclipseLink拋出了一些異常,說它沒有用空值更新其他列。 我試圖將@ChangeTracking屬性添加到我想更新的類中,因此它只是更新已更改的列,但它沒有工作,我甚至不知道這是否是正確的方式。如何使用EclipseLink更新MySQL表中的列?

那麼如何使用EclipseLink更新表中的單個列?

回答

1

如果您的合併不起作用,很可能是因爲您正在從頭開始創建新實例,並且只嘗試填充要更改的值。這會導致合併用null覆蓋所有其他字段。不要在不完整的實體上使用em.merge,因爲它合併了每個JPA託管字段 - 它無法知道您的意圖,並且必須合併實體的整個狀態。

而是使用您的更改來修改託管實例。一個簡單的例子:

em.getTransaction().begin(); 
YourEntity instance = em.find(YourEntity.class, id); 
instance.setYourAttribute(newValue); 
em.getTransaction().commit(); 

或者一個分離的實例從EM讀入,你稍後使用em.merge。

+0

謝謝!這工作!那麼@ChangeTracking呢?那是什麼以及何時使用它? – Rox 2012-03-29 08:15:40