org.hibernate.exception.SQLGrammarException: could not extract ResultSet解决方案

使用SSH框架连接数据库查询,
详细报错如下:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
		at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
		at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1542)

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet的报错是由查询语句Query queryObject = getSession().createQuery(queryString);造成的,原因总体来说就是数据库查询失败。
查询失败基本都是由于HQL语句转为SQL语句出错引起的,下面列出几种可能的原因:

  1. 数据库连接设置的dialect不对。
  2. HQL语句写错了。
  3. 用到的实体类写错了
  4. 用到的实体类映射文件hbm.xml写错了。

为了找到错误原因,我们可以在控制台检查HQL语句和SQL语句。
不会控制台显示HQL语句和SQL语句的小伙伴看这里:SSH框架控制台输出HQL语句和SQL语句的方法

红框内的是HQL语句,红框后面select开始的是对应的SQL语句。
org.hibernate.exception.SQLGrammarException: could not extract ResultSet解决方案_第1张图片
检查SQL语句时,如果觉得SQL语句太长太复杂,可以把它放到数据库里执行一下,可以很快得到答案。
org.hibernate.exception.SQLGrammarException: could not extract ResultSet解决方案_第2张图片
这样做下来,想来应该对这个bug有些头绪了吧。

你可能感兴趣的:(JavaWeb,hibernate,spring,javaweb)