欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSP:org.hibernate.hql.internal.ast.QuerySyntaxException: catalog is not mapped [from catalog]

程序员文章站 2022-04-28 18:56:53
...

一般出现上标题的错误,大多是Hql语句写错了
例如正常查询为

Query query=session.createQuery(" from Catalog");
//其中,Catalog为类名

出错时一般解决办法如下:
1.检查是否将hibernate的映射文件添加到Hibernate.cfg.xml或者applicationContext.xml中
2.检查表中的字段和映射文件中的字段是否一一对应,由于使用****生成POJO,这个一般很少出问题
3.Hql拼写出错。(笔者犯的错是把Catalog写成数据库表中的catalog表名,导致查了很久都没发现错误,还有多个空格之类的)


往往就是针对这几项就能找出问题所在。

另外借鉴以下他人查找的资料做一下笔记(以下出自https://blog.csdn.net/u012506661/article/details/52788027
Hql(Hibernate 查询语言),Hibernate 配备了一种非常强大的查询语言,这种语言看上去很像 SQL。但是不要被语法结构上
的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。
15.1. 大小写敏感性问题
除了 Java 类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT 与 sELEct 以及 SELECT
是相同的,但是 org.hibernate.eg.FOO 并不等价于 org.hibernate.eg.Foo 并且 foo.barSet 也不等价于 foo.BARSET。
本手册中的 HQL 关键字将使用小写字母。很多用户发现使用完全大写的关键字会使查询语句的可
读性更强,但我们发现,当把查询语句嵌入到 Java 语句中的时候使用大写关键字比较难看。

15.2. from 子句
Hibernate 中最简单的查询语句的形式如下:
from eg.Cat
该子句简单的返回 eg.Cat 类的所有实例。通常我们不需要使用类的全限定名,因为 auto-
import(自动引入)是缺省的情况。所以我们几乎只使用如下的简单写法:
from Cat
为了在这个查询的其他部分里引用 Cat,你将需要分配一个别名。例如:
from Cat as cat
这个语句把别名 cat 指定给类Cat 的实例,这样我们就可以在随后的查询中使用此别名了。关键
字 as 是可选的,我们也可以这样写:
from Cat cat
子句中可以同时出现多个类,其查询结果是产生一个笛卡儿积或产生跨表的连接。