SSH整合报错:org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped[......]
非常诡异的报错,信息如下:
org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [select count(*) from User u where u.userName=? and u.userPassword=? ]
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped
类似的报错信息的解决方法,我也是研究了半天才最后发现问题
出现这中错误情况有两种
1,配置文件没有加载到hibernate的实体列表里面
2,映射文件的字段与数据库字段不一致,或者名称不一致导致
hql 是 有专门的语法的。 不是sql。你把hibernate方言设置成你用的数据库。
sql的语法和hql不是一回事。
......QuerySyntaxException...是说,你要的sql不是hql,语法错误。。
1.看是否忘记将hibernate的映射文件添加到Hibernate.cfg.xml(使用Hibernate时)或者applicationContext.xml中
2.检查表中的字段和映射文件中的字段是否一一对应
3.检查字段名是否使用了数据库中的关键字
4.HQL语句是否正确
HQL: Hibernate 查询语言Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。
所以这个时候你要认真检查一下你写的hql语句,一定是对象查询,特别是【tableName】 不要写你要查询的表,而是查询的对象
比如:
public long getTypeCount(Patent patent) {
String hqlString = "select count(*) from Patent as p where p.type ='"+patent.getType()+"'";
Query query = this.getSession().createQuery(hqlString);
long count =0;
count = ((Number)query.uniqueResult()).intValue();
return count;
}
Patent 是一个对象
而数据库的表名是patent 如果写成String hqlString = "select count(*) from patent as p where p.type ='"+patent.getType()+"'";
肯定是查询不出结果的,切记!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?