加强hibernate的criteria查询中的使用Example查询.doc

加强hibernate的criteria查询中的使用Example查询.doc

ID:57651063

大小:74.00 KB

页数:11页

时间:2020-08-30

加强hibernate的criteria查询中的使用Example查询.doc_第1页
加强hibernate的criteria查询中的使用Example查询.doc_第2页
加强hibernate的criteria查询中的使用Example查询.doc_第3页
加强hibernate的criteria查询中的使用Example查询.doc_第4页
加强hibernate的criteria查询中的使用Example查询.doc_第5页
资源描述:

《加强hibernate的criteria查询中的使用Example查询.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、有人说Query更强大,但我人个比较喜欢用criteria,觉得使用criteria才符合Java开发的规范。但criteria在使用example进行关联的对象查询时,会得到非预期的结果。举个例子:两个简单实体类Department:(部门)以及另一个类Employee:(员工)这两个表的关联关系我就不多说了,这行都应该都懂,呵呵。。。     此时,我需要通过一些特定的条件去查找employee,当然分页什么的就不说了,因为查询条件会根据客户需求不同而不同,所以直接使用Example进行操作[code=java] Criteria criteria = getSession

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

5、ibernate.HibernateException;importorg.hibernate.criterion.CriteriaQuery;importorg.hibernate.criterion.Criterion;importorg.hibernate.criterion.MatchMode;importorg.hibernate.criterion.Restrictions;importorg.hibernate.criterion.SimpleExpression;importorg.hibernate.engine.TypedValue;importorg.hi

6、bernate.persister.entity.EntityPersister;importorg.hibernate.type.AbstractComponentType;importorg.hibernate.type.Type;importorg.hibernate.util.StringHelper;/***AcopyofHibernate'sExampleclass,withmodificationsthatallowyouto*includemany-to-oneandone-to-oneassociationsinQueryByExample(QBE)*quer

7、ies.associationclass*/publicclassAssociationExampleimplementsCriterion{privatefinalObjectentity;privatefinalSetexcludedProperties=newHashSet();privatePropertySelectorselector;privatebooleanisLikeEnabled;privatebooleanisIgnoreCaseEnabled;private

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。