具体问题见:http://www.iteye.com/problems/25460
目前比较简陋的实现先用着,使用别名按照递归别名下去就ok了,性能估计有点悬
期待高手解决
实现如下:
说明下:
1,QueryItem 是参考springside的PropertyFilter,把一般查询分离开来,解耦service和dao,封装的是查询的属性名,和查询值,匹配方式,
2,doMultiAss名称磋了些,不要在意,就是user.blog.name这样的多级关联通过分解
最后直接用别名"blog_m.name"就ok了(_m是自己去取的别名)
3,这里有lgdlgd同志的另一种实现http://lgdlgd.iteye.com/blog/472799
需要的请参考
private void doMultiAss(QueryItem queryItem, DetachedCriteria criteria) {
final String suffix="_m";//加个后缀,区别于hibernate自己在sql中生成的
if (queryItem.getPropertyName().contains(".")) {
//多层关联问题解决
String[] props=queryItem.getPropertyName().split("\\.");
StringBuffer perPropName=new StringBuffer(props[0]);
StringBuffer alienName=new StringBuffer(perPropName).append(suffix);
criteria.createAlias(perPropName.toString(), alienName.toString());
for (int i = 1; i < props.length-1;i++) {
perPropName=new StringBuffer(alienName).append(".").append(props[i]);
alienName=new StringBuffer(props[i]).append(suffix);
criteria.createAlias(perPropName.toString(), alienName.toString());
}
queryItem.setPropertyName(alienName.append(".").append(props[props.length-1]).toString());
}
}
代码简陋,欢迎斧正
分享到:
相关推荐
Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码
Hibernate_QBC查询
Hibernate QBC高级查询 大家放心收藏! saivixky出品!必属精品!
Java_Hibernate QBC条件查询对比
Hibernate实例开发 HQL 与 QBC 查询
QBC的各种查询,采用mvc多hibernate的封装,是很好的资料
HQL与QBC的查询条件(33k)
使用Hibernate的QBC查询,对数据库内容进行分页查询,在控制他显示,可跳转转的页面
收录了QBC_hibernate完整用法.大家可以下载看看.作为参考.
之前也发了一个,这个包含之前的,还添加了hibernate对数据库操作的代码(注意:controller层两个QBC/SQLTest代码不能运行,只是写出了操作数据库的除了HQL的另外2种方式)。我发现现在还是有很多公司用hibernate+...
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询
QBC的相关讲义和例题 QBC(Query By Criteria)查询方式是Hibernate提供的“更加面向对象”的一种检索方式。QBC在条件查询上比HQL查询更为灵活,而且支持运行时动态生成查询语句。
Hibernate_QBC查询[归类].pdf
Hibernate criteria queris 条件查询(QBC)转 Hibernate QBC查询 QBC分页查询大全
NULL 博文链接:https://wfq5154.iteye.com/blog/1714952
查询所有 // 2.条件查询 // 3.模糊查询 // 4.范围查询 // 5.排序查询(order by) // 6.分页查询 // 7.投影查询(只获取部分字段的结果) // 8.聚集函数使用(聚合函数)(count、sum、avg、max、min等) // 9.TOP N...
Hibernate中使用Criteria Query各种QBC查询
hibernate概述,hibernate入门Demo,hibernate配置文件详解(全局配置,实体类映射配置),配置...hibernate查询方式概述,HQL查询,QBC查询,分页,结果集封装方式 ,高级查询 查询的优化,一级缓存,二级缓存,批量查询,注解方式
hibernate 利用QBC查询方式,省去hql编写的繁琐
NULL 博文链接:https://awfrun.iteye.com/blog/690632