`

hibernate 查询应用总结(一)

阅读更多

今天主要总结hibernate的Criteria标准查询,Criteria(标准)查询的功能非常强大,只要sql语句能解决的他就能解决,主要包括Example(示例查询),Restrictions(限制),Projections(投影),还有aggregation(聚会),离线查询,子查询。其中重点讲解关联查询,可以通过criteria.createCriteria()方法或criteria.createAlias()方法进行关联查询。我碰到了一个非常复杂的关联查询,sql语句如下:

 String sql = select cp.id from ctl_project cp left join ctl_change_info cci on cci.ctl_project_id = cp.id group by cci.ctl_project_id having sum(CHAR_LENGTH(replace(cci.change_content_type,'conf',''))< CHAR_LENGTH(cci.change_content_type)) >=0 and cp.id in(select max(id) from ctl_project cp2 group by sale_no,intby2 ); 

  

其中ctl_project和ctl_change_info是一对多的关系,实现方法有两种:

一是直接执行sql语言:getSession().createSQLQuery("上述语句").getEntity(CtlProject.Class).list()。

另一种是要重点强调的,就是在criteria的基础之上添加原始的sql语句,因为要用到left join,所以原本简单的问题有点复杂了。试用了很多种方法,

(1)createAlias("ctlChangeInfo","change").add(Restrictions.sqlRestriction("上述语句on cci.ctl_project_id = cp.id 后面部分语句")),

(2)criteria.add(Restrictions.sqlRestriction("上述语句on 后面部分语句"))等等,能想到的几乎都想到了,都没效果,加了几次班,终于在今天周五把问题解决了,能过一个轻松的周末了,真有一种说不出的喜悦和高兴,就像打了一场胜仗一样。其实很简单:cr.createAlias("ctlChangeInfos", "change").add(Restrictions.sqlRestriction("上述语句on cci.ctl_project_id = cp.id之后,group by之前");但是要在group by之前添加“1=1” ,并且要将cp改成this_,将cci改成change1_就ok了,加“1=1”是因为criteria的add方法生成了where这一关键字,所以直接加“group by”是不行的,必须是“where 1=1 group by……”要加至于为什么要改成this_和change1_,这是hibernate运用时的别名,通过查看生成的sql语句得到的。

本文书写比较混乱,没有实际的参考价值,仅作为本人的总结。

分享到:
评论

相关推荐

    浅析java程序中hibernate的应用总结

    hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java

    Hibernate工作中应用的总结.doc

    Hibernate在工作中应用的总结,贡献给大家,希望大家共同提高

    hibernate重点总结(doc)

    一、应用程序的分层结构 二、hibernate数据持久化组件 三、持久化类 四、把持久化类映射到表 五、持久化对象(Persistent Object) 六、Hibernate中实体关系的处理 七、Hibernate知识点总结 八、Hibernate控制的事务

    Hibernate+中文文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    HibernateAPI中文版.chm

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate3.2中文文档(chm格式)

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    有关java中hibernate的用法及其应用的总结,用于初学者的入门教程.zip

    有关java中hibernate的用法及其应用的总结,用于初学者的入门教程.zip

    hibernate 总结

    学习hibernate的一些总结,包括一些比较新的应用技术,帮助初学者快速上手,有助于提高效率

    hibernate总结

    持久化类的对象,在hibernate应用中可以处于三种状态(根据对象和session之间的关系进行划分): 1. 临时态,瞬态:特点: a) 在数据库中没有记录和它对应 b) 和session没有任何关系 c) New 出来的对象,都处于临时...

    Spring 2.0 + Struts 1.2 + Hibernate 3.2 + DWR 2.0 的JavaEE应用示例

    总结,该例示注释非常详细,演示Spring托管Hibernate和Struts的Action, 以及Spring的事务声明(包括1.x与2.x的用法)与非事务声明的使用方式。 使用DWR可以方便的使用Spring托管的持久层功能。 目的:希望广大Java...

    Hibernate中文详细学习文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Hibernate 中文 html 帮助文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate 体系结构与配置 参考文档(html)

    第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射...

    Hibernate教程

    2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射...

    Spring+Hibernate+MySql的应用实例

    实现了Spring+Hibernate+MySql的融合,通过部分修改调整,可以直接运行.本人亲自测试过,总结和不能运行原因已归纳在文件中

    MyEclipse Hibernate 快速入门(电子书)

    我们将全程带领你来开发一个非常简单的 Java Hibernate 应用. 对于这个教程没有包含到的问题和概念, 我们推荐你去参考 资源 部分列出的 Hibernate 资源. 这个文档展示了如何进行下列工作: 1.为 Java 项目添加 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate+中文api

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    搞定J2EE核心技术与企业应用:Ajax,JSP,Struts2,Spring,Hibernate,完整扫描版

    《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用java进行web开发的各种框架的使用方法,从而...

    hibernate 快速入门 中文版

    hibernate 快速入门 中文版 翻译: 刘长炯 前言 准备工作 介绍 Hibernate 一览 创建 HibernateDemo 项目 使用 HQL 编辑器 测试 HibernateDemo 应用 使用示例 HibernateDemo 项目 总结 用户反馈 资源

Global site tag (gtag.js) - Google Analytics