博主资料

留言 加为好友 收藏

用户名:  yanchengyang

公告

本博客原创文章,欢迎转载,转载请注明出处

日 历

2008 8.21 Thu
     12
3456789
10111213141516
17181920212223
24252627282930
31      
«» 2008 - 8 «»

个人统计

用户名: yanchengyang
等级: 初来乍到
威望: 495
积分: 1220
在线时间: 55 小时
日志总数: 88
评论数量: 81
访问次数: 405474
建立时间: 2006-05-16
RSS订阅       手机访问

最新评论

文章搜索

文章列表

友情链接

最近访问的人:

直流电源,直流稳压..
2008-08-19 10:18:55
java
2008-08-18 11:04:46
adfadfert
2008-08-17 17:56:36
yujing
2008-08-16 10:53:19
It交流会所
2008-08-14 09:29:32
找回以前的我
2008-07-29 17:46:36
大博客
2008-07-29 17:04:21
BEAUTIFUL SMILE
2008-07-29 16:49:21
2008-07-19 17:31:43
ccimanic
2008-07-18 11:42:40

日志文章

2007年05月07日 09:16:23

Hibernate中的HQL的小问题

在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命名规范。

Tags: Hibernate3   HQL   Eclipse  

类别: JavaEE |  评论(0) |  浏览(4304) |  收藏
发表评论