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()+"'"; 

肯定是查询不出结果的,切记!

 

如果这篇文章对您有帮助,请随便打赏一点点,作为鼓励,非常感谢您!!!!

转载于:https://www.cnblogs.com/zhangliang88/p/5476340.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值