2、().createCriteria(Employee.class); if (empoyee != null) { criteria.add(Example.create(empoyee ));//这里会忽略关联 } //.....中间是分页等处理 List> result = criteria.list();[/code]注意上面的注释,Example进行查询是会忽略所有的null值以及关联的对象,故,如果我想根据empoyee 的department来查询empoyee 的话,就会将所有的empoyee 都查询出来,因为department被忽略了。遇到这个问题有两种解
3、决方法:一、我的做法如下:Criteria criteria = getSession().createCriteria(Employee.class); if (empoyee != null) { criteria.add(Example.create(empoyee ));//这里会忽略关联//加强后的Example查寻,不再忽略关联对象criteria.createCriteria("dpartment").add(Restrictions.eq("id",empoyee .getDepartment.getId()));} //.....中间是分页等处理 List
4、> result = criteria.list();二、下面是我在网上看到别人的做法,个人感觉有点麻烦:(转)那么这个问题怎么解决呢,查看了Example类的源码后,我决定动手修改——当然不能直接去改它的源码,在参考了hibernate官方论坛后,新建了类:importjava.util.ArrayList;importjava.util.HashSet;importjava.util.List;importjava.util.Set;importorg.hibernate.Criteria;importorg.hibernate.EntityMode;importorg.h