今天跟着视频做项目时发现一个错误“node to traverse cannot be null!”,先贴出部分错误提示:
java.lang.IllegalArgumentException: node to traverse cannot be null!
at org.hibernate.hql.ast.util.NodeTraverser.traverseDepthFirst(NodeTraverser.java:63)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:282)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:184)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:904)
at com.base.impl.BaseDaoImpl.findAll(BaseDaoImpl.java:57)
at com.staff.service.impl.StaffServiceImpl.findALL(StaffServiceImpl.java:25)
com.staff.web.action.StaffAction.findAll(StaffAction.java:71)
at java.lang.Thread.run(Unknown Source)
错误提示中已经明确给出了错误代码的行号,找到对应代码,乍一看很正确,以为是tomcat神经了,重启了一下,还是相同的错误,于是开始仔细看代码,提示我的DAO层和SERVICE层出错。
果然,仔细一看是自己的hql语句写错了,“from”+bean.getName(),from后面竟然没有空格,加上空格之后程序正常。上网查了相似的错误发现大多数错误都是自己hql语句书写错误导致的,以后发现这种错误应该首先查看自己的sql语句是否正确。特别是空格、英文字母顺序等像我一样初级菜鸟经常出现的错误。