Query q = session.createQuery("update User u set u.birthday=:bday , u.realName=:rn , u.sex=:sex , u.birthPlace=:bP , u.livePlace=:lp , u.bloodType=:bt where u.username=:username ");
q.setParameter("bday", u.getBirthday());
q.setParameter("rn", u.getRealName());
q.setParameter("sex", u.getSex());
q.setParameter("bP", u.getBirthPlace());
q.setParameter("lp", u.getLivePlace());
q.setParameter("bt", u.getBloodType());
q.setParameter("username", u.getUsername());
q.executeUpdate();
总是报“could not lacate named parameter [username]”的错误。上面插入的所有值debug过,都是有的,User u的所有属性名都没问题,update语句的语法估计也是这个样的呀,数据库表中也有username这个属性,忘大家指出我粗心大意的地方。
q.setParameter("bday", u.getBirthday());
q.setParameter("rn", u.getRealName());
q.setParameter("sex", u.getSex());
q.setParameter("bP", u.getBirthPlace());
q.setParameter("lp", u.getLivePlace());
q.setParameter("bt", u.getBloodType());
q.setParameter("username", u.getUsername());
q.executeUpdate();
总是报“could not lacate named parameter [username]”的错误。上面插入的所有值debug过,都是有的,User u的所有属性名都没问题,update语句的语法估计也是这个样的呀,数据库表中也有username这个属性,忘大家指出我粗心大意的地方。
could not lacate named parameter [id]
或could not lacate named parameter [username]
的错误,而且username是有的····
那你把参数的值都替换一下,然后直接在sql客户端里执行试试呢
“update User u set u.realName='aaa' where u.username='disalong'”
这下够简单了吧,然后用junit测试还是不行,报的错误是:
unecpected token: xxxx [update User u set u.realName='aaa' where u.username='disalong']
感觉已经不是hql的问题了,应该是我的表结构有问题,但是明显的我的User类中有
username和realName两个属性,也是根据hibernate的关联关系生成表的,搞不懂···还有我的User表中有很多的外键表头关联着其他表,这不会是出问题的地方吧,没有头绪
网上找半天找不出原因,才到这里问问,估计还是解决不了。
用回session.update()了,效率是低一点,好歹能解决问题,不想花时间钻这点东西
user表中的字段名和User类的属性名一致的。至少username是一致的,
但是它却说“无法定位username”,虽然方法多的是,但是我始终还是
想知道为什么。