您的位置:首页 > Web前端 > Node.js

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

2017-09-18 15:44 363 查看
使用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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: