`
raymond2006k
  • 浏览: 293869 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Hibernate映射不规则查询结果

阅读更多
今天看到网友 pistol, 发贴 hibernate的sqlQuery有没有setResultTransformer这个方法, 大致是问如何为特殊返回结果的 Query 映射持久类。

由于hibernate3.2之前没有 setResultTransformer 这个方法。推荐你一个简单的办法。

将你新建的 DTO类(我们的项目叫VO) 的sql 看作一个View实体,就像普通表一样,为其建立一个 hbm.xml 文件,其中的
<class name="xxx.xxx.CatDTO" table="V_CAT">

并设置字段映射,tablename 随便写一个名字,例如 V_CAT, 就是看作一个虚表。

然后,
   
     
        session.createQuery(HQL );
         session.createSQLQuery(  SQL).addEntity("cat", voClass);

这样就达到你的目的了。

对HQL来说,直接使用就行了。
不过,对原生sql有个问题,你的sql语句必须按照hibernate的要求,为每列写成alias的形式。
SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex} FROM CAT {cat} 

我已在公司的SSH框架中进行了改进, 直接丢进native sql,就能执行。
SELECT NAME, BIRTHDATE FROM CATS


分享到:
评论
2 楼 yeah 2008-11-23  
这种方式在hibernate 2里也是支持的,就是麻烦一些,每一个Sql查询都都得在hbm中定义一个这样的VO。
另外,作为一个class定义,一定得有id属性的定义,所以需要在Sql中拼一个id字段,并且id字段值在同一次查询中不能重复。实际上可能我的Sql查询中根本不需要id这样的属性,所以有条件的话升级hibernate到3.2以上吧。
1 楼 hemahehe 2008-11-22  
不错的办法,对付一些概念混乱的表很有用呢
回去就改用这个方法试试,总算可以把我以前的一个错误的映射改回来了

相关推荐

    常用 Hibernate 映射配置说明.doc

    `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库连接细节、默认的映射策略等。 - **schema**: 定义了数据库的Schema名称...

    Hibernate映射配置实例大全(详细总结)

    "Hibernate映射配置实例大全"是一个全面深入的资源,旨在帮助开发者理解和掌握如何有效地配置Hibernate以实现对象关系映射(ORM)。在这个文档中,我们将探讨各种关键的映射配置方法,以及相关的实例。 首先,我们...

    Hibernate映射集合属性List

    本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate自动创建对应的数据库表,无需手动编写SQL语句。 首先,我们需要理解Hibernate的映射机制。Hibernate通过ORM(对象关系映射)技术将Java对象...

    [原]Hibernate集合映射

    Hibernate允许我们在集合映射中定义排序规则,使用`@OrderBy`注解指定排序字段和顺序。同时,通过Query对象的`setFirstResult`和`setMaxResults`方法可以实现分页查询。 10. **集合缓存** 为了提高性能,...

    hibernate关联映射的作用和常用属性解释

    ### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...

    hibernate set 集合映射

    在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象模型中的集合类,如List、Set、Map等。这允许我们在Java代码中操作对象集合,而Hibernate负责处理底层的SQL查询和数据存储。本文将深入探讨`...

    用MyEclipse自动生成hibernate映射文件和实体类

    接下来,我们讨论如何自动生成Hibernate映射文件和实体类: 1. 首先,你需要选择你的Java项目,然后右击并选择MyEclipse菜单,接着选择“Add Hibernate Capabilities”。这个操作会引导你配置Hibernate的相关设置,...

    hibernate的映射文件配置

    总之,Hibernate映射文件的配置是实现高效、准确的对象关系映射的关键,理解并熟练掌握其配置规则对于使用Hibernate框架进行持久化操作至关重要。通过合理配置主键策略和属性映射,可以显著提高应用程序的数据访问...

    hibernate list集合映射

    4. **查询和遍历**:使用HQL(Hibernate Query Language)或Criteria API来查询List集合,然后遍历结果。 **四、性能优化** 1. **缓存策略**:利用Hibernate的第一级缓存和第二级缓存,减少对数据库的频繁访问。 ...

    Hibernate自动生成持久化类和映射文件

    在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它能够将数据库中的数据与Java对象进行映射,从而简化数据库操作。"Hibernate自动生成持久化类和映射文件"这个话题主要涉及如何利用...

    Hibernate 相关映射关系

    在Java世界中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细探讨Hibernate中的映射关系,主要包括实体之间的一对一、一对多、...

    hibernate公共查询

    6. **排序查询**:`Order`接口可以用来设置查询结果的排序,`Criteria`提供`addOrder()`方法添加排序规则。 7. **事务管理**:为了确保数据的一致性,公共查询类中的每个方法应包裹在`Transaction`中,处理异常时...

    hibernate 映射关系

    在Hibernate中,映射关系是其核心功能之一,它定义了对象与数据库表之间的对应规则,包括一对一、一对多、多对一和多对多四种主要关系。接下来,我们将深入探讨这些映射关系。 一对一(OneToOne)关系: 在数据库...

    根据数据库表生成实体、hibernate配置文件和实体映射文件

    在IT行业中,数据库是存储和管理数据的核心工具,而Hibernate是一个流行的关系型对象-关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。本教程将深入讲解如何根据数据库表自动生成实体类、Hibernate配置...

    hibernate关系映射

    在Hibernate映射文件中,通过`&lt;many-to-one&gt;`标签将User类的group属性映射到t_user表的gid外键。 - 反之,如果一个User属于一个Group(一对多),则在Group类中添加一个User的集合。映射文件中,使用`&lt;set&gt;`标签...

    Java数据类型,Hibernate数据类型,标准sql数据类型之间的对应表

    总而言之,Java数据类型、Hibernate映射类型和SQL数据类型之间的对应关系是Java开发者尤其是进行数据库交互的开发者必须掌握的基础知识。通过深入理解并熟练运用这些映射规则,我们可以更好地实现Java应用与数据库...

    Hibernate-Criteria 模糊查询

    2. **排序**:`Criteria`允许你指定查询结果的排序规则,使用`addOrder`方法添加`Order`实例。 ```java criteria.addOrder(Order.asc("name")); criteria.addOrder(Order.desc("groupId")); ``` 3. **分页**:...

    Hibernate 一对一关联查询.docx

    在Hibernate的配置文件中,我们需要指定外键的映射规则。例如在 **User.hbm.xml** 中: ```xml &lt;hibernate-mapping&gt; &lt;!-- ... --&gt; &lt;!-- ... --&gt; &lt;/hibernate-mapping&gt; ``` 这里的`&lt;many-to-one&gt;`标签表示一对一...

    hibernate 集合映射

    在Hibernate映射文件中,我们可以使用`&lt;set&gt;`标签来配置。例如: ```xml ``` 这里,`name`属性定义了集合属性名,`table`指定关联的数据库表,`inverse`表示是否反转关系,`key`和`many-to-many`则定义了...

    Hibernate_Annotation关联映射

    和其它许多批注一样,在多对多关联中很多值是自动生成,党双向多对多关联中没有定义任何物理映射时,Hibernate根据以下规则生成相应的值,关联表名:主表表名+下划线+从表表名,关联到主表的外键名:主表名+下划线+...

Global site tag (gtag.js) - Google Analytics