hibernate-过滤器_Zim_it的空间_百度空间
(1) Team team = (Team)session.get(Team.class, 1);
Query query = session.createFilter(team.getStudents(),"where this.age>22");
List list = query.list();

注意以下几点:一,CreateFilter()方法返回的是Query对象;二,createFilter()方法的{dy}个参数为一个持久化对象,比如Team对象是临时或脱管状态都不行)的集合.

(2) 使用filter-def和filter来定义一个过滤器,如下:(类级别的过滤器)----查询Student时候过滤
<hibernate-mapping>
   <!--把类和数表关联起来-->
   <hibernate-mapping package="pojo">
         <class name="Student" table="student" lazy="true">
              <id name="id" type="integer" column="id">
                   <generator class="native"/>
              </id>

              <property name="name" column="name" type="string" not-null="true" length="255"/>
  
              <many-to-one name="clazz" column="class_id" class="Classes"/>
  
             <filter name="studentFilter" condition=":name=name"></filter>
  
           </class>

           <query name="queryStudent_byName">
                     <![CDATA[
                              from Student s where s.name like :name       
                      ]]>
           </query>


          <!-- filter-def是公用的别的映射文件中也可以使用 -->
           <filter-def name="studentFilter">
                    <filter-param name="name" type="string"/>
            </filter-def>

</hibernate-mapping>

session.enableFilter("studentFilter").setParameter("name", "stu 19");
String hql = "from Student";
   Student student = (Student)session.createQuery(hql).uniqueResult();
   Assert.assertEquals("stu 19", student.getName());
   Assert.assertEquals(10, student.getClazz().getId().intValue());

(3)集合过滤器---对Classes中Student的过滤

<set name="students" table="student" cascade="all" inverse="true" lazy="true">
      <key column="class_id"/>
      <one-to-many class="pojo.Student"/>
      <filter name="studentFilter" condition=":name=name"></filter>
   </set>

session.enableFilter("studentFilter").setParameter("name", "stu 19");
   String hql = "from Classes";
   List<Classes> classesList = session.createQuery(hql).list();
   for (Classes classes : classesList) {
           Set<Student> students = classes.getStudents();
           if (students.size() == 0) {
                  System.out.println(classes.getName());
          } else {
                  for (Student student : students) {
                 Assert.assertEquals("stu 19", student.getName());
            }
      }

}

(4)编码形式

Classes classes = (Classes) session.get(Classes.class, 10);
Student student = (Student) session.createFilter(classes.getStudents(), "where this.name = 'stu 19'").uniqueResult();
   Assert.assertEquals(10, student.getClazz().getId().intValue());



郑重声明:资讯 【hibernate-过滤器_Zim_it的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——