转自:http://42087743.iteye.com/blog/305219
Hibernate提供了对类使用预先定义的过滤器条件的功能,并提供了专门的Filter类.
[list] 首先在需要过滤的model类的hbm.xml中:- <classname="com.u2map.model.oneToOne.Pwd">
- <idname="id"column="id"type="integer">
- <generatorclass="foreign">
- <paramname="property">member</param>
- </generator>
- </id>
- <propertyname="pwd"column="pwd"type="string"></property>
- <one-to-onename="member"constrained="true"class="com.u2map.model.oneToOne.Member"></one-to-one>
- //过滤器配置
- <filtername="myFilter"condition="pwdlike:myFilterParam"/>
- </class>
- //过滤器配置
- <filter-defname="myFilter">
- <filter-paramname="myFilterParam"type="string"/>
- </filter-def>
[/list]
[list] 其次,在testcase中加上过滤:
- //使用过滤器
- session.enableFilter("myFilter").setParameter("myFilterParam","%a%");
- Queryquery=session.createQuery("fromPwdpwherep.id=:id");
- query.setParameter("id",3);
- Pwdmember=null;
- try{
- member=(Pwd)query.uniqueResult();
- }catch(HibernateExceptione){
- e.printStackTrace();
- }
- Assert.assertEquals(member.getId(),3);
- Assert.assertEquals(member.getPwd(),"abc");
[/list]
[list] 查看下hibernate生成的sql语句,证明filter已经加上:
- Hibernate:selectpwd0_.idasid1_,pwd0_.pwdaspwd1_fromPwdpwd0_wherepwd0_.pwdlike?andpwd0_.id=?