当前位置:首页 > 网络编程 > 软件语言 > J2EE > Hibernate中的HQL的一个小问题

Hibernate中的HQL的一个小问题

点击次数:54 次 发布日期:2008-11-11 16:58:00 作者:源代码网
源代码网推荐
广告载入中
在Eclipse3.2提供了Hibernate的HQL查询编写工具,在其中可以书写HQL查询语句,执行后可以直接看到查询结果,这为我们编写程序带来了很大的方便.但是要注意在HQL语言中区分大小写,而在我们SQL语法中却不区分.

HQL查询转换器表名区分大小写,他查询的是个类,首字母要大写,如from Student,如写成from student 则会引发错误,在Hibernate动态查询转换器中会输出如下异常信息:
org.hibernate.hql.ast.QuerySyntaxException: student is not mapped. [from student]
Caused by:
org.hibernate.hql.ast.QuerySyntaxException: student is not mapped. [from student]

如果书写正确,Hibernate动态查询转换器则会将HQL语句转换为SQL语句,如from Student ,则会转换成如下SQL语句:
select
  student0_.stuid as stuid1_,
  student0_.stuname as stuname1_,
  student0_.stuage as stuage1_ 
 from
  pubs.dbo.student student0_

由此,我们可以分析出Hibernate是通过Java反射机制来完成动态转换这一功能的,如果是小写的student,Hibernate则不会找到相应的类来进行处理,由此我们也可以推断出HQL查询语句是区分大小写的,他要求表名,字段名要与相匹配的类,属性同名,而且要严格保持一致,包括大小写,而 SQL语句是不区分大小写的,在这一点上一写要注意。再细仔考虑下,这个问题又告诉我们什么,他告诉了我们写的HQL查询语句要想让Hibernate识别出来,则编写的程序一定要符合命名规范,哈哈,虽然规范对于我们来说是一种束缚 ,但是符合规范可以让我们的程序更加通用,更加易于理解,我们在写代码过程中一定严格遵守Java命名规范。

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华