频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
Hibernate外置命名查询报错:Named query not known: serachStu
2013-08-17 13:28:40           
收藏   我要投稿

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

我的代码:


[html]
<class name="Student" table="t_student"> 
        <id name="id" column="student_id"> 
            <generator class="native"/> 
        </id> 
     
        <property name="name" column="student_name"/> 
        <many-to-one name="myclass" column="student_class"/> 
        <query name="serachStu"> 
            <![CDATA[
                select s from Student s where s.id>?
            ]]> 
        </query> 
     </class> 

<class name="Student" table="t_student">
   <id name="id" column="student_id">
    <generator class="native"/>
   </id>
 
   <property name="name" column="student_name"/>
   <many-to-one name="myclass" column="student_class"/>
   <query name="serachStu">
    <![CDATA[
     select s from Student s where s.id>?
    ]]>
   </query>
  </class>
结果在java测试类中执行


[java]
List list = session.getNamedQuery("serachStu").setParameter(0, 40).list(); 

List list = session.getNamedQuery("serachStu").setParameter(0, 40).list();
出现报错:

 

[html]
org.hibernate.MappingException: Named query not known: serachStu 
    at org.hibernate.impl.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:93) 
…… 

org.hibernate.MappingException: Named query not known: serachStu
 at org.hibernate.impl.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:93)
……
程序没有找到这个命名查询语句。这个错误的原因是

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

改成:


[html]
SPAN style="FONT-SIZE: 14px">   <class name="Student" table="t_student"> 
        <id name="id" column="student_id"> 
            <generator class="native"/> 
        </id> 
     
        <property name="name" column="student_name"/> 
        <many-to-one name="myclass" column="student_class"/> 
     </class> 
    <query name="serachStu"> 
        <![CDATA[
            select s from Student s where s.id>?
        ]]> 
    </query></SPAN> 

  <class name="Student" table="t_student">
   <id name="id" column="student_id">
    <generator class="native"/>
   </id>
 
   <property name="name" column="student_name"/>
   <many-to-one name="myclass" column="student_class"/>
  </class>
  <query name="serachStu">
   <![CDATA[
    select s from Student s where s.id>?
   ]]>
  </query>

 

 


 

点击复制链接 与好友分享!回本站首页
上一篇:楼梯有m层,可以迈1步或两步,有几种方法?
下一篇:Struts2常见错误
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站