当前位置: 代码迷 >> J2EE >> hibernate更新某个字段其余null字段不能新如何实现
  详细解决方案

hibernate更新某个字段其余null字段不能新如何实现

热度:67   发布时间:2016-04-17 23:16:12.0
hibernate更新某个字段其余null字段不能新怎么实现?
现在是这个情况:
User里面有id name username password这几个字段
然后我前台修改页面只传过来username 和password这两个字段
之前的实现方法是
User user = getSession().get(User.class,user.getId());
user.setUsername("xxxx");
user.setPassword("yyy")l
getSession().merge(user);
这样就实现了只更新某个字段

但是这样的步骤是先查询所有字段,然后在比较所有字段,最后更新单个字段,效率太低,而且如果字段很多的话set方法写起来太烦
之后用了hql大概是这样的
getSession().createQuery("update User u set u.loginName='ddd',u.password='ddd' where u.id=26").executeUpdate();
写起来效率高了。但是更烦了

有没有更更一点的方法,能够实现没有传进来的null字段不参与更新?
------解决思路----------------------
在<class 写 dynamic-update="true"> Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把 dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
------解决思路----------------------
@Column(updatable=false) ,updatable属性表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。试试这个吧
  相关解决方案