日期:2014-05-18  浏览次数:20626 次

org.hibernate.Query.executeQuery()执行update语句时如何插入null?
xxxService.executeUpdate("update Student t set t.sName=?,t.addr=?,t.remark=?,t.sAge=? where t.id=?", 
 new Object[]{sname,addr,remark,sage,sId});


如上是我自己写的方法,内部最终调用的就是Query.executeQuery(),后面的Object数组会在方法内进行正确绑定;

问题:
   在四个参数均有值传入时更新是正常的,但我设计年龄是可以不填的,如此,如果某人在更新页面把已有的年龄删除,文本框留空,那么传到后台后sage会是null,再执行executeUpdate时就会报错,什么“需要的是number,得到的是byte”;

需要的效果:
    我需要的效果其实很简单,就是如果传过来的年龄为null,在数据库中就什么也不存(不是0或者什么-1之类的标量),怎么实现呢?我只能用executeUpdate,不能用全对象更新(update(Student s));

高手帮忙啊。。。。。。。

------解决方案--------------------
if(sage==null){
  xxxService.executeUpdate("update Student t set t.sName=?...t.sAge=null....., new Object[]{sname,addr,remark,sId});
}else{
  你原来的代码
}