Hibernate过滤器

定义过滤器:

<filter-def name="myFilter">
<filter-param name="myFilterParam" type="string"/>
</filter-def>
定义好之后,就可以在某个类中使用这个过滤器
<class name="myClass" ...>
...
<filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</class>
也可以在某个集合使用它:
<set ...>
<filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</set>

Session 对象中会用到的方法有enableFilter(String filterName) , getEnabledFilter(String filterName) , 和 disableFilter(String filterName) . Session中默认是 启 用过滤器的,必须通过Session.enabledFilter() 方 法显式的启用。 该方法返回被启用的Filter 的 实例。以上文定义的过滤器为例:

session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");

注意,org.hibernate.Filter的方法允许链式方法调用。(类似上面例子中启用 Filter之后设定Filter参数这个“方法链”) Hibernate的其他部分也大多有这个特性。

 

简单例子

Room.hbm.xml

<class name="Room" table="t_room" >
        <id name="id">
             <generator class="native"/>        
        </id>
        <property name="name" column="name"></property>   
        <filter name="myFilter" condition=" name between :room1 and :room2"/>
    </class>
    <filter-def name="myFilter">
             <filter-param name="room1" type="string"/>
             <filter-param name="room2" type="string"/>
     </filter-def>

 

test.java

         session.beginTransaction();   

        //只查询room1 到 room3的名字
         session.enableFilter("myFilter").setParameter("room1", "room1")
                                              .setParameter("room2", "room3");           
          List list=session.createQuery("select name from Room").list();


 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值