一个对象的字段我有一个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