hibernate过滤器 filters

hibernate过滤器 filters
过滤器条件相当定一个非常类似于类和各种集合上的 where 属性的约束子句;
定一个过滤器在<hibernate-mapping/>节点之内的<filter-def>节点
<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),getEnabledeFilter(String filterName)
和disableFilter(String filterName),session中默认是不启动过滤器的,必须通过Session.enabledFilter()方法
显示的启动。该方法返回被启用的Filter的实例
session.enableFilater("myFilter").setParamter("myFilterParam","some-value");
<filter-def name="myFiltertest">
 <filter-param name="asofDate" type="date"/>
<filter-def>
<class name="Employee" .....>
<many-to-one .....>
<filter name="effectiveDate" condition=":asofDate between eff_start_dt and eff_end_dt"/>
</class>
定义好了就可以使用
Session session=.....;
session.enabledFilter("myFiltertest").setParameter("asofDate",new Date());
List result=session.createQuery("from Object as o where o.####>o.param")
.setLong("param",new Long(1000000)).list();
过滤器对加载某个类或集合的时候把不符合条件的数据过滤掉..当然过滤器的使用是手动配置也可以不实用过滤器

例如:可以使用过滤器得到集合的大小,而不必实例化整个集合:

((Integer))session.createFilter(collection,"select count(*)").list().get(0)).intValue();

((Integer)).iterate("select count(*) from ...").next()).intValue();

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值