关于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();等)。

原文地址:https://www.cnblogs.com/xiadongqing/p/5260126.html