一個對象的字段我有一個object A
映射到table A
在DB更新在休眠
class A {
Integer id;
String field2,field2;field3 ,... fieldN;
//lots of other attribute
}
現在我想要寫一個DAO API,僅僅更新單個field.One辦法是,我可以第一加載那麼對象改變我需要的屬性,然後使用合併API
//start transcation
A a = session.load(A.class, id);
A.setfieldP(newValue)
session.merge(A)
//commit transcation
現在,如果我用下面的代碼
//start transcation
A a = new A();
a.setId(id); //set a id by which object A exists in DB
A.setfieldP(newValue)
session.merge(A)
//commit transaction
現在第二種方法除id和fieldP之外的所有字段設置爲空
1)現在還有其他方法嗎?
2)我可以使用更新而不是合併?
您可能已經知道這一點,但saveOrUpdate可以處理分離的對象。唯一一次遇到麻煩的時候,是有一個現有的對象具有相同的ID連接到會話。 –
'saveOrUpdate'將更新值的分貝(+1) – bluefoot
@Russ Sanwald現有對象:在第二個方法whati我試圖做的是,我想更新object.Now更新它,我不想取它從數據庫然後更新,而不是我創建一個新的對象A,設置其主鍵和字段N,然後更新。我設置主鍵爲我想用primarykey = X更新對象(假設對象與id x已經目前在數據庫中,我設置fieldN,因爲我想更新它。我不改變主鍵,但我的目的是chnage使用id = X – akshay