![](/icons/75362dou.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou2.gif)
Hibernate3新增了对某个类或者集合使用预先定义
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362yi.gif)
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou2.gif)
应用
![](/icons/75362chengxu.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362chengxu.gif)
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
要使用过滤器
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362yi.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
<filter-def name="myFilter">
<filter-param name="myFilterParam" type="
"/>
</filter-def>
定义好的后
![](/icons/75362dou.gif)
<
name="myClass" ...>
...
<filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</
>
也可以在某个集合使用它:
<
...>
<filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
</
>
可以在多个类或集合中使用某个过滤器;某个类或者集合中也可以使用多个过滤器
![](/icons/75362dou2.gif)
Session对象中会用到
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362kh.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362de.gif)
session.enableFilter("myFilter").
Parameter("myFilterParam", "some-value");
注意
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362diaoyong.gif)
![](/icons/75362dou2.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
下面是
![](/icons/75362yi.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
<filter-def name="effectiveDate">
<filter-param name="asOfDate" type="date"/>
</filter-def>
<
name="Employee" ...>
...
<many-to-one name="department" column="dept_id"
="Department"/>
<property name="effectiveStartDate" type="date" column="eff_start_dt"/>
<property name="effectiveEndDate" type="date" column="eff_end_dt"/>
...
<!--
Note that this assumes non-terminal records have an eff_end_dt
to
a max db date for simplicity-sake
注意
为了简单起见
此处假设雇用关系生效期尚未结束
记录
eff_end_dt字段
值等于数据库最大
日期
-->
<filter name="effectiveDate"
condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
</
>
<
name="Department" ...>
...
<
name="employees" lazy="true">
<key column="dept_id"/>
<one-to-many
="Employee"/>
<filter name="effectiveDate"
condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
</
>
</
>
定义好后
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
Session session = ...;
session.enabledFilter("effectiveDate").
Parameter("asOfDate",
Date
);
List results = session.createQuery("from Employee as e where e.salary > :targetSalary")
.
Long("targetSalary",
Long(1000000))
.list
;
在上面
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362yi.gif)
![](/icons/75362dou.gif)
![](/icons/75362yinwei.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362yi.gif)
![](/icons/75362de.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
注意:
如果你打算在使用外连接(或者通过HQL或load fetching)
![](/icons/75362de.gif)
![](/icons/75362dou.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362de.gif)
![](/icons/75362dou2.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou.gif)
![](/icons/75362dou2.gif)
最新评论