网上找过相关的文章,说只要dynamic-update="true"就会更新部分字段.从控制台看日志还是更新了全部的字段.而且以前的内容设置成null.具体是这么操作的,前台给我一个dto对象,我把dto转换成model(实体类).再调用hibernate进行更新.
User u = new User() ;
u.setId( dto.getId() ) ;
u.setName( dto.getName() ) ;
u.setAge( dto.getAge() ) ;this.getHibernateTemplate().update( u ) ;这样会更新全部.其他字段比如身高性别都会变成空值.
怎么让他更新部分字段啊?
User u = new User() ;
u.setId( dto.getId() ) ;
u.setName( dto.getName() ) ;
u.setAge( dto.getAge() ) ;this.getHibernateTemplate().update( u ) ;这样会更新全部.其他字段比如身高性别都会变成空值.
怎么让他更新部分字段啊?
用Query,自己写hql语句,比如"update Users u set u.age=20 where u.id=1"
最后调用Query对象的executeUpdate()方法就ok了
User u=this.getHibernateTemplate().get(dto.getId() );
u.setName( dto.getName() ) ;
u.setAge( dto.getAge() ) ;
this.getHibernateTemplate().update( u ) ;
这个配置属性,可以不用配
1.根据转换过来的model类,通过id从数据库查出该记录,再通过set方法更改需要修改的字典,最后update对象
2.前台缓存对象的所有属性,这样,传至后台的时候转换成model对象时,属性值就不会丢失了
3.就像1楼说的,写sql语句更新特定的字段
试了一下直接用SQL更新也还好,至少一次数据库访问就完成操作了。不知道有没有什么潜在的问题。
getHibernateTemplate().getSessionFactory().openSession().createSQLQuery("update table set xxx='123' where yyy='321'").executeUpdate();
真是有点儿搞不懂hibernate。