执行hibernate报错“node to traverse cannot be null”问题的解决

使用hibernate执行HQL,有时候会报错:

java.lang.IllegalArgumentException: node to traverse cannot be null!

一般来说,这是由于使用hibernate 中的HQL做查询时出现了空返回值的错误,很有可能HQL语句本身就写错了,比如:

String Finder = new String("update set bean.test=bean.test+:value");
Query query = getSession().createQuery(Finder);

此处会报错,是因为HQL中没有说明数据表的名称,把名称加上:

String Finder = new String("update TestTable bean set bean.test=bean.test+:value");
Query query = getSession().createQuery(Finder);

就正确了。


还有一种情况就是在query接口创建引用的时候,本意是引用配置文件中的HQL语句却大意写成了创建,

<!--user.editpassword就是相当于queryName-->
    <query name="user.editpassword">
        UPDATE User SET password = ? WHERE id = ?
    </query>
public void executeUpdate(String queryName, Object... objects) {
    Session session =            this.getSessionFactory().getCurrentSession();

正确:
    Query query = session.getNamedQuery(queryName);

错误:
    Query query = session.createQuery(queryName);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值