springDAO更新指定字段:
在DAO层,更新的对象不要用new,而使用hibernateTemplate().load();
例如,传进来一个对象,该对象保存了N个字段,但不是持久化对象的所有字段
如果直接用HibernateTemplate().savaorUpdate(instanse)的话,会将其他未set的字段设置为null
如何使用数据库的默认值呢?
例:加入一个Student对象,有name,age,sex三个属性,从高层传过来的student对象只设置了name和age两个属性
如果直接在dao层update的话,显然sex属性会被null覆盖
public void reStudent(Student student){
HibernateTemplate ht = this.getHibernateTemplate();
Student stu = ht.load(Student.Class,student.getID());//ht.load(p1,p2)参数p2是student表的主属性
stu.setName(student.getName());
stu.setAge(student.getAge());//未设置sex属性
ht.flush();//changes to studnet are automatically detected and persisted
ht.savaOrUpdate(stu);
}
这时update了stu对象后,未设置的属性保持DB原来的值
在DAO层,更新的对象不要用new,而使用hibernateTemplate().load();
例如,传进来一个对象,该对象保存了N个字段,但不是持久化对象的所有字段
如果直接用HibernateTemplate().savaorUpdate(instanse)的话,会将其他未set的字段设置为null
如何使用数据库的默认值呢?
例:加入一个Student对象,有name,age,sex三个属性,从高层传过来的student对象只设置了name和age两个属性
如果直接在dao层update的话,显然sex属性会被null覆盖
public void reStudent(Student student){
HibernateTemplate ht = this.getHibernateTemplate();
Student stu = ht.load(Student.Class,student.getID());//ht.load(p1,p2)参数p2是student表的主属性
stu.setName(student.getName());
stu.setAge(student.getAge());//未设置sex属性
ht.flush();//changes to studnet are automatically detected and persisted
ht.savaOrUpdate(stu);
}
这时update了stu对象后,未设置的属性保持DB原来的值