查询过滤器:
* 在映射文件中定义过滤器参数
* 在类的映射中使用这些参数
* 在程序中启用过滤器
例子代码如下:
映射文件: <hibernate-mapping> <class name=" hibernate.Student" table="t_student"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <property name="createTime"/> <many-to-one name="classes" column="classesid"/> <!-- 使用定义过滤器参数 --> <filter name="filtertest" condition="id < :myid"/> </class> <!-- 定义过滤器参数 --> <filter-def name="filtertest"> <filter-param name="myid" type="integer"/> </filter-def> </hibernate-mapping> 客户端测试代码: /** * 查询过滤器 * @author Administrator */ public class FilterQueryTest extends TestCase { public void testQuery1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); session.enableFilter("filtertest") //启用过滤器 .setParameter("myid", 10); //设置参数 //查询会自动使用过滤器 List students = session.createQuery("from Student").list(); for (Iterator iter=students.iterator(); iter.hasNext();) { Student student = (Student)iter.next(); System.out.println(student.getName()); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } } |