`
glamey
  • 浏览: 91911 次
  • 性别: Icon_minigender_1
  • 来自: bj
社区版块
存档分类
最新评论

关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)

    博客分类:
  • J2EE
阅读更多

    相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已。我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的。
     例如现在有两张表,一张是user表,放了一些用户的信息,另外一张表是用户发表的帖子,里边有一个user的外键。我们需要查询出来,某个人发布的帖子,sql如下:

select u.userName,p.title,p.addTime from user as u,post as p where u.id=p.userId


但是我们的POJO映射仅仅是做了user,post表的映射,这个时候,我们需要写一个PostVO类,里边放着了用户的信息和帖子的信息的属性,设置get\set方法,务必保证这个类里边有一个默认的构造函数。
然后我们开始写这个数据库操作的dao,代码如下:

String sql = "select u.userName as userName p.title as title ,p.addTime as addTime from user as u,post as p where u.id=p.userId"
Query q = factory.getCurrentSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(PostVO.class));


红字部分必须跟PostVO中的属性一直,这样就可以返回一个针对PostVO的一个集合。

其实大家可以看下hibernate这一部分的源码就会发现,主要是使用了AliasToBeanResultTransformer这个类,通过sql的查询,会返回数组,然后hibernate根据数据表的映射,自动帮我们来set对应的字段属性,所以标红的部分务必要跟VO中的属性值一直,要不然会报错的。
如果需要的话,大家也可以重写这个类。例如VOResultTransformer。然后在dao中更改成

setResultTransformer(new VOResultTransformer(PostVO.class));


即可。

 

4
0
分享到:
评论

相关推荐

    Oracle自动生成hibernate实体(.java 和.hbm.xml文件)存储过程

    关于`.hbm.xml`文件,它是Hibernate的XML映射文件,用于描述Java对象(实体类)与数据库表之间的关系。每个实体类对应一个`.hbm.xml`文件,其中包含了类名、属性名、字段类型、主键信息以及关联关系等配置。这些信息...

    Hibernate关联关系hbm.xml中的相关属性

    在Hibernate中,关联关系是对象关系映射(ORM)的核心组成部分,它允许我们将数据库的表结构映射到Java对象,并管理这些对象之间的关联。在hbm.xml文件中,我们可以使用`<many-to-one>`, `<one-to-many>`, 和 `...

    hibernate。hbm.xml配置详解

    在 Hibernate 中,`hbm.xml` 文件是用于定义对象与数据库表之间映射的元数据文件。这篇文档将深入解析 `hbm.xml` 配置的各个方面。 ### 1. `hbm.xml` 文件结构 `hbm.xml` 文件的开头通常包含 XML 声明和 DTD 引用...

    Hibernate的........htm.xml和hibernatecfg.xml配置

    `.hbm.xml`文件用于映射数据库表和Java类之间的关系,而`hibernate.cfg.xml`则是Hibernate的整体配置文件,包含了数据库连接、事务管理等核心设置。 ** Hibernate基础知识 ** Hibernate是一款流行的Java持久化框架...

    hbm xml配置详解 ssh框架

    在Hibernate中,XML配置文件是连接对象模型与数据库模型的关键,而`.hbm.xml`文件就是这种映射的载体。本文将深入探讨Hibernate的`.hbm.xml`配置文件以及其内部的映射类型。 首先,让我们了解`.hbm.xml`文件的作用...

    从hbm的xml文件 自动生成数据库表

    标题中的“从hbm的xml文件自动生成数据库表”指的是在Java编程中,使用Hibernate框架的一个功能,通过Hibernate Mapping(hbm.xml)文件来自动创建对应的数据库表结构。Hibernate是流行的Java ORM(对象关系映射)...

    使用Hibernate逆向生成实体类的方法(注解和hbm.xml映射文件)

    - 对于通过hbm.xml生成的实体类,需要在hibernate.cfg.xml中添加相应的映射文件路径。 3. **测试连接**: - 运行测试程序,验证Hibernate是否能够正确读取映射信息并与数据库交互。 通过以上步骤,我们不仅能够...

    xdoclet 用于生成*.hbm.xml

    这些文件包含了关于字段映射、关联关系、查询定义等各种元数据信息。 使用xdoclet,开发者只需在Java类中添加特定的注解,如@Entity、\Field等,xdoclet就会根据这些注解自动生成对应的.hbm.xml文件。这样不仅减少...

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

    要将本地SQL查询的结果封装成对象,我们首先需要定义一个映射文件(.hbm.xml),在这个文件中,我们需要指定查询返回的对象类型以及字段与数据库列的对应关系。例如: ```xml <hibernate-mapping> ...

    hibernate.cfg.xml 配置 和数据库驱动

    《hibernate.cfg.xml配置与数据库驱动详解》 在Java Web开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使开发者能够更专注于业务逻辑而不是底层数据存储。而`hibernate.cfg.xml`文件是...

    hibernate.cfg.xml文件

    在`hibernate.cfg.xml`中,我们通常不会直接写入实体类的属性映射,而是引用外部的`.hbm.xml`文件。这些映射文件详细描述了实体类和数据库表之间的关系,包括字段映射、主键生成策略等。 四、运行时加载配置 在...

    Hibernate连表查询 Hibernate连表查询

    根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...

    Hibernate+本地SQL查询SQLQuery宣贯.pdf

    此外,可以在Hibernate的映射文件(hbm.xml)中定义结果集映射,然后在查询中使用: ```java List<Cat> cats = sess.createSQLQuery( "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten....

    CodeSmith对应的NHibernate的.hbm.xml映射文件的生成模板

    而.hbm.xml文件是NHibernate中的映射文件,用于定义对象与数据库表之间的映射关系。 本主题主要围绕CodeSmith如何生成NHibernate的.hbm.xml映射文件展开。这些映射文件是NHibernate工作的重要组成部分,它们描述了...

    hibernate实现动态SQL查询

    在Hibernate中,我们可以创建自定义的SQL查询语句并将其配置在映射文件(.hbm.xml)中。这些自定义SQL可以在需要时动态调用,从而实现动态查询。例如,我们可以为一个实体类定义多个HQL或SQL查询,根据实际需要选择...

    ssh整合,不带hibernate.cfg.xml的方式

    在这个场景中,我们关注的是不通过传统的`hibernate.cfg.xml`文件来配置Hibernate,而是借助Spring框架的`LocalSessionFactoryBean`进行整合。 首先,`hibernate.cfg.xml`是Hibernate传统配置文件,它包含了数据库...

    Hibernate.cfg.xml配置总结

    Hibernate作为一款强大的Java对象关系映射框架,其核心配置文件Hibernate.cfg.xml在项目中起着至关重要的作用。这个文件主要负责定义数据源、连接池、SQL方言、日志以及实体类映射等关键设置。本文将深入探讨其中的...

    JavaEE spring和Hibernate整合(有hibernate.cfg.xml)

    其次,Hibernate是一个强大的对象关系映射(Object-Relational Mapping,ORM)框架,它允许开发者使用Java对象来操作数据库,消除了SQL代码与业务逻辑之间的直接关联。Hibernate通过XML配置文件(如hibernate.cfg....

    hbm.xml说明

    `hbm.xml` 文件是 Hibernate 框架中的核心配置文件之一,用于定义 Java 类与数据库表之间的映射关系。通过该文件,开发人员可以灵活地控制对象-关系映射的细节,包括表名、字段映射、主键生成策略等。下面将详细介绍...

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

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

Global site tag (gtag.js) - Google Analytics