在开发一个密码重置的功能过程中,因为调用方法失误,报了一个这样的错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: USERS is not mapped [sql语句],后面跟一大堆乱七八糟的东西,其实语句已经提示很明显,就是因为Hibernate。

我们都知道Hibernate执行查询的语句hql是面向对象的查询,而非面向数据库表的查询,因此在hql语句中的对象名必须与实体类的类名一致,并且严格区分大小写,不然就会报上述错误。

因为建了基类查询,其中有两个方法,其service和serviceImpl实现分别如下:

//service
public int execsql_SS(String sql);//实现
@Override
public int execsql_SS(String sql) {int result = 0;Session ss = sessionFactory.openSession();Transaction ts = ss.beginTransaction();try {result = ss.createSQLQuery(sql).executeUpdate();ts.commit();} catch (HibernateException e) {ts.rollback();e.printStackTrace();throw e;} finally {ss.close();}return result;
}
//service
public int executeHql_SS(String hql);//实现
@Override
public int executeHql_SS(String hql) {Session session = sessionFactory.openSession();Transaction ts = session.beginTransaction();int bl = 0;try {bl = session.createQuery(hql).executeUpdate();ts.commit();} catch (HibernateException e) {e.printStackTrace();throw e;} finally {session.close();}return bl;
}

解释一下,语句比较简单,就是:UPDATE USERS SET PASSWORD='' WHERE ……

调用executeHql_SS()方法报了如上错误,而调用execsql_SS()方法则可以正常执行,原因是什么呢?其不同之处就在于二者实现方法中这一句话的不同:

executeHql_SS()方法实现:
session.createQuery(hql).executeUpdate();execsql_SS()方法实现:
session.createSQLQuery(sql).executeUpdate();

两者的区别:
createQuery():使用hql语句进行查询,以Hibernate生成的Bean为对象,并将对象装入List中返回
参数:HQL查询
返回值:Query查询
抛出异常:HibernateException

createSQLQuery():使用sql语句进行查询,是以对象数组形式返回
参数:SQL查询
返回值:SQLQuery
抛出异常:HibernateException

org.hibernate.hql.internal.ast.QuerySyntaxException错误原因相关推荐

  1. Hibernate org.hibernate.hql.internal.ast.QuerySyntaxException: tb_supplier is not mapp

    session = sessionFactory.openSession(); session.beginTransaction(); Query query = session.createQuer ...

  2. org.hibernate.hql.internal.ast.QuerySyntaxException

    报错的原因可能是在做投影查询时实体类中没有提供相应的有参构造方法 比如: session.createQuery("select new TblFwxx(lxr,title) from Tb ...

  3. org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped [from XXX]

    原来这个from 后面加的,不是表名,而是确实真的是持久类的名字. 什么配置文件字段和表内容不对应都特么扯淡!! 表里面的内容不需要全部写到配置文件,需要什么就写什么

  4. ERROR org.hibernate.hql.internal.ast.ErrorCounter unexpected token: form 异常解决

    ERROR org.hibernate.hql.internal.ast.ErrorCounter unexpected token: form 异常解决 参考文章: (1)ERROR org.hib ...

  5. o.h.hql.internal.ast.ErrorTracker : Unable to locate class [xxx]

    springboot jpa项目启动报错如下: o.h.hql.internal.ast.ErrorTracker : Unable to locate class [xxx] org.hiberna ...

  6. hibernate xxx is not mapped 错误原因及解决方法

    hibernate xxx is not mapped 错误原因及解决方法 参考文章: (1)hibernate xxx is not mapped 错误原因及解决方法 (2)https://www. ...

  7. org.hibernate.hql.ast.QuerySyntaxException: ? is not mapped

    2010-5-3 21:48:23 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for ser ...

  8. org.hibernate.hql.ast.QuerySyntaxException: myaddressbook is not mapped

    用hibernate查询 显示如下信息: org.hibernate.hql.ast.QuerySyntaxException: myaddressbook is not mapped. [from ...

  9. weblogic10异常:org.hibernate.hql.ast.HqlToken

    今天部署应用到WLS10上,在运行过程中出现 ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误weblogic异常退出. GOOGLE ...

最新文章

  1. python培训班哪些比较好-学习Python去哪好?哪家Python培训机构比较靠谱
  2. Geany 代码自动补齐功能设置
  3. stm32f401 i2s 时序图
  4. nestjs CRUD
  5. 全球与中国血管重建装置市场投资现状及发展规划建议报告2022-2028年
  6. 《Log4j 2 官方文档》Scripts
  7. BCompare日志
  8. 图论 Make Unique:有向图和无向图的一些算法
  9. 空谈Saas都扯淡,让你看看真正的云计算
  10. 经验证过的跨线程更新辅助类MyInvokeHelper
  11. 【转】C#中的命名空间namespace全解
  12. C++ 与Qt开发人机象棋(第一部分)
  13. 2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
  14. 【每周论文】Graphene: Packing and Dependency-aware Scheduling for Data-Parallel Clusters(OSDI 2016)
  15. stc12c5a60s AD转换获取土壤的湿度
  16. 大学必须掌握的软件基础课程
  17. Vultr Debian8系统一键快速DD安装Windows7系统
  18. Arduino与Proteus仿真实例-NTC热敏电阻驱动仿真
  19. 棋和麦粒问题(C语言回调函数实现)
  20. Dictionary和IDictionary

热门文章

  1. 微信语音短消息amr文件转WAV
  2. 从游戏服务端角度分析移动同步(状态同步)
  3. MIUI“息屏听剧”功能实现调研
  4. ue4变形、FlipFlop
  5. 计算机左下角文档,基本操作 单击考试系统界面左下角上的Windows资源管理器图标(3页)-原创力文档...
  6. halcon图像灰度操作
  7. 监控服务器时间无法修改怎么办,监控服务器修改时间
  8. 实验六 使用T-SQL语句查询数据
  9. 常用的统计建模方法——差分分析
  10. FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:/tjn/tra