配置如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bjsxt.hibernate.Student" table="t_student">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="createTime"/>
<many-to-one name="classes" column="classid"/>
<filter name="idfilter" condition="id < :myid"/>
</class>
<query name="searchStudents"><![CDATA[
select s from Student s where s.id < ?
]]>
</query>
<filter-def name="idfilter">
<filter-param name="myid" type="integer"/>
</filter-def>
</hibernate-mapping>
测试代码:
package com.bjsxt.hibernate;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import junit.framework.TestCase;
/**
* 外置的命名查询测试
* @author Administrator
*
*/
public class NameQueryTest extends TestCase {
public void testQuery1() {
Session session = null;
try {
session = HibernateUtils.getSession();
List students = session.getNamedQuery("searchStudents")
.setParameter(0, 10)
.list();
for (Iterator iter = students.iterator();iter.hasNext();) {
Student student = (Student)iter.next();
System.out.println(student.getName());
}
}catch(Exception e) {
e.printStackTrace();
}finally {
HibernateUtils.closeSession(session);
}
}
}