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

来源:互联网 发布:java final修饰方法 编辑:程序博客网 时间:2024/06/03 15:05

使用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);}
阅读全文
0 0