Hibernate中的HQL的一个小问题
点击次数:54 次 发布日期:2008-11-11 16:58:00 作者:源代码网
|
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命名规范。 源代码网推荐 源代码网供稿. |
