求解HQL的更新方法。

[复制链接]
查看11 | 回复2 | 2011-4-8 16:01:52 | 显示全部楼层 |阅读模式
String hql = "update Bus b set b.name=? b.start=? b.end=? b.start_time=? b.end_time=? b.type=? where b.id=?";
Query q = ht.getSessionFactory().getCurrentSession().createQuery(hql);
//q.setString(0, bus.getName());
//q.setString(1, bus.getStart());
//q.setString(2, bus.getEnd());
//q.setString(3, bus.getStart_time());
//q.setString(4, bus.getEnd_time());
//q.setString(5, bus.getType());
//q.setInteger(6, id);
运行时会报错
15:17:08,796 ERROR org.hibernate.hql.PARSER:56 - line 1:47: unexpected token: b
15:17:08,796 ERROR org.hibernate.hql.PARSER:56 - line 1:52: unexpected token: =
大体上就是说b.start那里就开始出错了
而且我把?换成常量时,从工作台给出的hql语句依然可以看到id是从前台获取的...这是什么情况?
java.lang.IllegalArgumentException: node to traverse cannot be null!这错误

回复

使用道具 举报

千问 | 2011-4-8 16:01:52 | 显示全部楼层
String hql = "update Bus b set b.name=?, b.start=?, b.end=?, b.start_time=?, b.end_time=? ,b.type=? where b.id=?";都加个逗号
回复

使用道具 举报

千问 | 2011-4-8 16:01:52 | 显示全部楼层
用了Hibernate,更新还写语句,真的不知道这个框架怎么被用成这个样子了!~将数据装载到Bus对象,然后ht.save(bus);//不知道你的ht是不是HibernateTemplate对象,如果是Spring中的Hibernate模板,那么就可以直接更新了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行