关于hql语句的一些问题
1.student is not mapped问题:
在执行显示数据库数据的时候出错
大概提示说:
errors: s.entr_Id
student is not mapped
碰到这种情况一般是: hql的配置文件和数据库的数据弄混了
要知道 hql是写的是PO对象,不是table名
数据库里的studnet表反转后生成Student.hbm.xml和Student.java
Student.hbm.xml部分代码如下:
<class name="com.hibernate.student" table="student">
<id name="id" type="java.lang.String">
<column name="id" />
<generator class="native" />
</id>
<property name="entrId" type="java.lang.String">
<column name="entr_Id" not-null="true" />
</property>
<property name="chName" type="java.lang.String">
<column name="chName" length="20" />
</property>
在ADO文件中。查询语句 hql="from student s where s.entr_Id=?;
是不正确的
应该改成hql="from Student s where s.entrId=?;
注意区分大小写。
2.hql语句的问题:要把hql语句与sql语句区分开来,
hql语句最明显的区别是语法比较严格,必须注意大小写。而sql则没有要求,另外,在执行的语句的时候一定要按照其格式要求:
如查询语句:String hql= "from Student where name=:name and pwd=:pwd" ;一定要按要求写,否则会执行不了。
另外,一些习惯问题。比如在执行sql语句的时先连接数据库,在执行hql是也一样(如:session=HibernateUtil.openSession();等)。