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

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

我的代码:

<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测试类中执行

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

出现报错:

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

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

在映射文件中配置<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"/>
	 </class>
 	<query name="serachStu">
 		<![CDATA[
 			select s from Student s where s.id>?
 		]]>
 	</query>



参考:

http://forum.springsource.org/showthread.php?24554-Named-Query-not-known

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值