`
linzhidong1984
  • 浏览: 4445 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate SQLQuery 将结果集映射到自定义实体类

 
阅读更多
当用hibernate进行多表查询时感觉用hql很不方便,所以本人就选择用sql查询。
由于我接触hibernate不久,在进行结果集和实体类映射的时候出现了很多问题,还好在百度上花费了一些时间,最后终于解决了

1:首先将多表查询需要的各个字段自定义一个实体类,不需要映射文件
OaYqsqVO类
private String id;
private String name;
private String aName;//a表的关联字段
private String bName;//b表的关联字段
private String cName;//c表的关联字段

get, set方法略


2:在进行查询的时候需要先将实体类中的字段用addScalar方法添加到query中,
用query.setResultTransformer(Transformers.aliasToBean(OaYqsqVO.class))
方法将实体类和结果集对应,代码如下
SQLQuery query = getSession().createSQLQuery(sql);
query.addScalar("id");
query.addScalar("name");
query.addScalar("aName");
query.addScalar("bName");
query.addScalar("cName");
query.setResultTransformer(Transformers.aliasToBean(OaYqsqVO.class));
return query.list();


这样基本就可以了,但是这出现了一个新问题,希望各位大牛帮忙
用hql查询后将list用
JSONArray.fromObject(list,jsonConfig).toString()
返回到前台中文无乱码

但是用sql查询将list用
JSONArray.fromObject(list,jsonConfig).toString()
返回到前台显示确出现乱码,不知道何因!!
分享到:
评论

相关推荐

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

    如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = (MyEntity) query.uniqueResult(); ``` 如果查询返回的是多个...

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

    总之,Hibernate的SQLQuery接口提供了一种灵活的方式来执行原生SQL查询,并将结果映射到Java对象。通过使用别名、结果集映射和命名SQL查询,开发者可以处理复杂的数据库交互,同时保持代码的清晰和整洁。

    Hibernate实体映射

    Hibernate支持使用类似SQL的HQL(Hibernate Query Language)进行查询,以及Criteria API进行更面向对象的查询。HQL允许按对象属性进行查询,而Criteria API提供了构建动态查询的接口。 六、事务管理 在进行数据库...

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

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

    Hibernate调用配置文件中的sql语句

    4. **结果映射**:默认情况下,Hibernate会将查询结果自动映射到对应的实体类。如果SQL查询返回的结果不匹配任何实体类,我们需要显式指定结果集的映射,使用`<return-scalar>`标签。 5. **事务处理**:执行SQL查询...

    Hibernate+本地SQL查询SQLQuery.pdf

    这段代码会执行一个查询所有猫(cats)的SQL语句,并将结果映射到Cat类的实例列表中。 2. **处理字段名冲突** 当查询涉及到多张表时,可能存在同名字段,这可能导致字段映射错误。为了避免这种问题,可以使用别名...

    hibernate实现动态SQL查询

    在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,从而提高开发效率。本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板...

    hibernate 执行原生sql的几种方式

    如果返回结果需要映射到实体类,可以使用`addEntity()`方法。 2. **使用`Session.doWork()`** `doWork()`方法允许我们在一个回调函数中直接操作数据库连接,执行原生SQL。这种方式更底层,可以进行更复杂的数据库...

    Hibernate之原生Native SQL查询

    此外,如果查询结果需要映射到多个实体类,或者返回复杂的结果集,那么处理起来可能会比较麻烦,需要手动进行结果集的封装。 在提供的压缩包文件"NativeSQLTest"中,可能包含了作者对使用Hibernate进行Native SQL...

    Hibernate教程20_关系映射案例三

    2. **配置文件**:在Hibernate中,`hibernate.cfg.xml`是核心配置文件,它包含了数据库连接信息、实体类映射等设置。在案例三中,我们需要关注这个文件中关于数据库URL、用户名、密码以及实体类的配置。 3. **实体...

    hibernate映射和查询

    在 Hibernate 中,对象关系映射(ORM)是将数据库表映射到 Java 类的过程。这个过程通过 `hibernate.cfg.xml` 配置文件和实体类(Entity Class)来实现。在 `hibernate.cfg.xml` 文件中,我们配置数据库连接参数,如...

    Hibernate生产SQL语句

    总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...

    hibernate3中通过nativesql或取部分字段并映射为具体对象的实现

    `addEntity`用于映射整个实体类,而`addScalar`则可以映射单个字段。例如,如果我们有一个User类,它有id和name属性,可以这样做: ```java List<User> users = sqlQuery.addEntity(User.class).list(); ``` 这样...

    hibernate数据库通用SQL代码

    这个方法适用于任何实现了Hibernate实体类的对象,只需传入待保存的对象即可。 ```java public void insert(Object o) { Session session = HibernateSessionFactory.currentSession(); Transaction t = session....

    hibernate(多对多关系映射)

    你需要在实体类中定义对应的集合属性,并在对应的`@ManyToMany`注解中指定关联的实体和中间表的信息。例如: ```java @Entity public class Student { @Id private Long id; @ManyToMany(cascade = ...

    hibernate 连接sqlserver2000

    在Java应用程序开发中,Hibernate提供了对象关系映射功能,简化了数据库操作,将Java类与数据库表关联起来,使得开发者可以避免编写大量的SQL语句。 描述中的链接指向了一个个人博客,虽然具体内容未给出,但我们...

    Hibernate查询映射试验

    在Hibernate中,这种映射通常通过XML配置文件(hibernate.cfg.xml)和实体类(Entity)来实现。在XML文件中,定义了数据源、方言、会话工厂等信息;在实体类中,通过注解@Entity、@Table等来声明类与表的关系,以及...

    hibernate的映射表生成器

    4. **映射文件(hbm.xml)**: Hibernate使用XML文件(通常命名为.hbm.xml)来定义实体类与数据库表之间的映射。映射文件包含了类名、表名、属性到列的映射、主键设置等详细信息。这个“映射表生成器”工具可以帮助...

    Native SQL查询 (使用SQLQuery).doc

    在 Hibernate 中,使用 SQLQuery 可以执行 Native SQL 查询,控制查询的执行是通过 SQLQuery 接口进行的,通过执行 Session.createSQLQuery() 获取这个接口。下面将详细介绍如何使用这个 API 进行查询。 标量查询...

    Hibernate映射

    2. **XML映射**:通过hibernate-mapping的XML文件定义类与表的映射,如`<class>`元素定义实体类,`<id>`定义主键,`<property>`定义属性等。这种方式灵活且可扩展,适合大型项目。 **三、一对一(One-to-One)映射*...

Global site tag (gtag.js) - Google Analytics