首页 > Java开发 > Hibernate外置命名查询报错:Named query not known: serachStu

Hibernate外置命名查询报错:Named query not known: serachStu

Hibernate提供了外置命名查询方式,将hql语句放在一个单独的文件中,而不是直接放在程序中。

我的代码:

 

[html][/html] view plaincopy

  1. <class name="Student" table="t_student">
  2.         <id name="id" column="student_id">
  3.             <generator class="native"/>
  4.         </id>
  5.         <property name="name" column="student_name"/>
  6.         <many-to-one name="myclass" column="student_class"/>
  7.         <query name="serachStu">
  8.             <![CDATA[
  9.                 select s from Student s where s.id>?
  10.             ]]>
  11.         </query>
  12.      </class>

结果在java测试类中执行

 

 

[java][/java] view plaincopy

  1. List list = session.getNamedQuery("serachStu").setParameter(0, 40).list();

出现报错:

 

 

[html][/html] view plaincopy

  1. org.hibernate.MappingException: Named query not known: serachStu
  2.     at org.hibernate.impl.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:93)
  3. ……

程序没有找到这个命名查询语句。这个错误的原因是

 

在映射文件中配置<query>时,应该把他放在<class>的外面。

改成:

 

[html][/html] view plaincopy

  1. <span style="font-size:14px;">   <class name="Student" table="t_student">
  2.         <id name="id" column="student_id">
  3.             <generator class="native"/>
  4.         </id>
  5.         <property name="name" column="student_name"/>
  6.         <many-to-one name="myclass" column="student_class"/>
  7.      </class>
  8.     <query name="serachStu">
  9.         <![CDATA[
  10.             select s from Student s where s.id>?
  11.         ]]>
  12.     </query></span>

本文固定链接: http://www.devba.com/index.php/archives/2281.html | 开发吧

报歉!评论已关闭.