`
greemranqq
  • 浏览: 976976 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

hibernate 自定义结果集

阅读更多

hibernate  中,有时候需要比较复杂的业务,比如需要从很多张表里面抽取数据,这时候就需要我们自定义结果集了。

 

假设:我需要分别从 7张表里面 分别取 a,b,c,d,e,f,g,h 字段。在原先的映射文件不满足的情况下,我建立了含有这些字段的实体bean.

 

1.Dao 的写法:

 

String sql = "...";
Session session = super.getSessionFactory().getCurrentSession();
SQLQuery query= session.createSQLQuery(sql.toString());
query.setResultTransformer(Transformers.aliasToBean(bean.class));//自定义bean

 

2. 当然这只是一种我比较喜欢的方式,hibernate 还提供了很多,具体请参与hibernate 的官方文档: Native SQL查询

 

3.值得注意的是Oracle 有些返回方式比较不一致,有些默认返回大写字段了,就会找不到Setter 方法。

  处理办法是:

  

Query query = getCurrentSession().createSQLQuery(sql)
		.addScalar("poNumber").addScalar("你自定义的字段名称");

还有一种:

select 
po_number \"po_number\",
payment_id \"payment_id\",
sum(invoice_amount) \"total_money\" 
from table;

经过转义一下,第一种不方便封装。第二种可读性差了。自己感觉吧。

还有更好的方式,希望能提供建议。不知道map 方便不。

 

4.在返回类型上,经常会出现 错误。比如 oracle 字段A 类型Number ,你实体定义为Integer 等类型会出错。

   这里解决方法是,定义为Object类型,或者查询A的时候 加上||‘’,强制返回字符串。

分享到:
评论

相关推荐

    hibernate自定义查询

    Hibernate支持使用`createSQLQuery`方法创建SQL查询,并返回结果集。例如: ```java Session session = sessionFactory.openSession(); SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM USER WHERE ...

    hibernate将本地SQL查询结果封装成对象

    如果查询返回的是多个对象,可以使用`setResultTransformer()`配合`Transformers.aliasToBean()`将结果集转换为指定类型的对象列表: ```java query.setResultTransformer(Transformers.aliasToBean(MyEntity.class...

    自定义 Hibernate Tools 的模板

    **自定义 Hibernate Tools 模板**是针对 Eclipse 开发环境中的 Hibernate 工具集进行的一种扩展,目的是在使用 Hibernate 逆向工程(Reverse Engineering)生成实体类时,能够根据数据库中的注释自动添加对应的注释...

    JQuery的启发-教你如何二次处理及优化IBatis和Hibernate的查询结果集

    对于Hibernate,我们可以使用`Criteria` API或`HQL`(Hibernate查询语言)进行查询,然后将返回的结果集包装到`ResultWrapper`中进行后续处理。 此外,我们还可以参考JQuery的延迟加载(lazy loading)概念,以优化...

    hibernate反向工程模板(已修改)

    反向工程是Hibernate工具集的一部分,通过分析数据库模式,能够快速生成符合项目需求的源代码。它不仅包括实体类,还包括相应的DAO接口和实现,以及持久化配置文件。这对于快速构建项目模型层,尤其是面对已有数据库...

    Hibernate帮助文档合集

    3. 查询缓存:针对HQL和Criteria查询结果进行缓存,提高查询效率。 六、关联映射 1. 一对一(OneToOne):一个实体对应另一个实体的唯一实例。 2. 一对多(OneToMany):一个实体对应多个实体实例,常用在一对多的...

    hibernate将本地SQL查询结果封装成对象(最终).zip

    - 结果集转换:`addEntity()`方法用于指定查询结果应被映射到哪个实体类,`list()`或`scroll()`方法执行查询并返回结果集,这些结果集将自动封装为对应的Java对象。 5. 示例: 假设我们有一个`User`实体类,对应...

    java javaee struts2 spring hibernate免费学习视频教程

    - **JDBC技术**:讲解如何通过JDBC访问各种关系型数据库,包括连接数据库、执行SQL语句、处理结果集的过程。 ### 前端技术 - **HTML/CSS/JavaScript基础**:介绍HTML5的新特性、CSS3的选择器和布局方法、...

    自定义标签实现的分页

    总的来说,使用Hibernate自定义标签实现分页功能,不仅能够简化代码,提高代码复用性,还能使页面更加整洁,便于维护。在实际开发中,还可以根据需求进一步扩展,例如添加跳转到指定页的功能,或者提供动态调整每页...

    hibernate-3.2源代码

    5. Query和Criteria API:提供了强大的查询能力,支持复杂的查询条件和结果集处理。 三、配置与初始化 Hibernate的配置文件(hibernate.cfg.xml)包含了数据库连接信息、缓存设置等关键参数。通过Configuration类...

    hibernate5.2.9

    通过学习Hibernate 5.2.9的源码,可以深入了解其内部实现,包括查询解析、结果集转换、缓存策略等细节,有助于提升开发技能。同时,了解并掌握这些知识点,将极大地提高Java应用的开发效率和质量。

    hibernate4.3.11所需jar包

    9. **性能优化**: Hibernate提供了多种性能优化手段,如批处理、延迟加载、结果集缓存等,以适应不同的应用场景。 总结来说,"hibernate4.3.11所需jar包"不仅包含Hibernate的核心库,还涉及到一系列依赖的第三方库...

    struts2、spring、hibernate面试题集

    拦截器在Action执行前后进行处理,可以自定义拦截器以实现如日志、权限验证等功能。多个拦截器按照配置顺序形成一个拦截器栈。 4. Struts2与Struts1的主要区别? Struts2更灵活,支持多种结果类型,提供了更强大...

    struts2+spring+hibernate分页,事务,自定义切面

    总之,Struts2、Spring和Hibernate的集成为Java Web开发提供了强大的工具集。理解并熟练运用它们在分页、事务管理和自定义切面的实现,能够帮助你构建高效、稳定且易于维护的应用程序。通过深入学习和实践,你可以...

    hibernate多表联合查询

    - `GROUP BY`子句按顾客ID分组结果集。 #### 五、Native SQL实现多表联合查询 有时候,我们可能需要执行一些更复杂的SQL查询,这时可以使用Hibernate的Native SQL查询功能。示例如下: ```java String sql = ...

    hibernate实现动态SQL查询

    接下来,通过Hibernate的Session对象,执行这个动态生成的SQL,获取结果集。整个过程包括:加载模板文件、设置模型变量、解析模板生成SQL、执行SQL并返回结果。 七、示例代码 ```java // 创建Freemarker配置 ...

    解决Hibernate中MySQL的中文排序

    这通常是由于字符集设置、数据库排序规则以及Hibernate的配置等因素导致的。本文将深入探讨如何解决这些问题,确保MySQL数据库中的中文数据能按照正确的顺序进行排序。 首先,我们需要了解MySQL字符集的基础知识。...

    Middlegen-Hibernate-r5,hibernate-extensions-2.1.3

    总的来说,这个压缩包为Java开发者提供了一个便捷的工具集,帮助他们在使用Hibernate进行数据库操作时,能够更加高效地完成从数据库设计到代码实现的转换,并通过Hibernate Extensions进一步优化和扩展其功能。...

    hibernate query调用oracle存储过程

    在Hibernate中,调用存储过程通常通过Session对象的createNativeQuery()方法实现,这个方法用于创建原生SQL查询,可以方便地调用数据库的自定义SQL或者存储过程。以下是一个简单的示例,展示了如何调用一个不带参数...

    Hibernate 参数配置详解

    - **描述**:允许 Hibernate 使用 JDBC2 的可滚动结果集。 - **取值**:`true` 或 `false`。 - **示例**:`hibernate.jdbc.use_scrollable_resultset=true` ##### 6. 使用流处理二进制数据 (Use Streams for Binary...

Global site tag (gtag.js) - Google Analytics