Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式。

开发中用Hibernate进行数据库查询,用的是SQL。
原来需要查询一个表的几乎所有字段,所以我使用了addEntity方法,将查询结果转换为映射的对象。
后来需求变更,需要查询另外几个表的若干字段,不想继续用addEntity绑定新加的表(毕竟只有几个字段需要查询出来,将多余的字段都转换成映射对象,或只将需查询的字段转换为映射对象,从维护角度来说似乎都不太好),网上查了查:
于是在addEntity后再使用addScalar方法指定字段以指定格式返回
于是返回的List中包含Object[]数组,这样在数组中除了有addEntity的映射对象,还有指定类型的字段结果

常用的结果集:
一、使用HQL的情况:

  1. 查询字段:使用"select t.field from Sample t ",返回List包含Object对象,如果查询多个单独字段,则返回的List包含Object[]
    1. List<String> list = super.getHibernateTemplate().find("select distinct t.job from Emp t order by t.job");
      List<String> list = super.getHibernateTemplate().find("select distinct t.job from Emp t order by t.job");
  2. 查询单个整个对象:使用"from SampleTable t where t.field = :filed "的写法,默认返回封装好的SampleTable对象List
  3. 查询多个整个对象:可指定获取哪些对象,如"select t1, t2 from SampleTable t1, SampleTable t2 where ...",此时会返回List中包含Object[],Object[]中在0位置为SampleTable对象,1为SampleTable对象
  4. 查询非映射对象:还可以以构造方法的方式"select new SomeVo(t.field1, t.field2) from xxx t1",返回封装好的SampleTable对象List
  5. 既查询整个对象又查询单个字段:使用"select t, t2.field from Sample t, Sample2 t2 ",返回List包含Object[]对象,而Object[]包含Sample对象,还有为字段类型的值

二、使用SQL的情况:

  1. 查询字段跟HQL的形式类似
  2. 查询单个整个对象,由于使用的是SQL,需要程序中用addEntity方法指定SQL查得的值与映射对象的关系(addEntity指定的对象类型必须为已经注册的映射对象)
  3. 查询多个整个对象,用多个addEntity绑定
  4. 既查询整个对象又查询单个字段:在addEntity后再使用addScalar方法,返回List包含Object[]对象,而Object[]包含Sample对象,还有为字段类型的值

hibernate框架之-查询结果集返回类型的更多相关文章

  1. Hibernate框架的查询方式

    技术分析之Hibernate框架的查询方式        1. 唯一标识OID的检索方式        * session.get(对象.class,OID)    2. 对象的导航的方式       ...

  2. (补充)10.Hibernate框架的查询方式

    技术分析之Hibernate框架的查询方式 1. 唯一标识OID的检索方式 * session.get(对象.class,OID) 2. 对象的导航的方式 3. HQL的检索方式 * Hibernat ...

  3. tp5.0 模型查询数据的返回类型,分页

    一开始用painate()这个函数的时候,发现有的查询方式不能使用这个函数,由此了解到了模型查询和普通查询返回类型的不同 1.原生查询方法 Db::query("select * from ...

  4. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  5. Mybatis全部查询遇到的返回类型的小问题

    在学习Mybatis3过程中遇到一个小问题,觉得需要注意就把它写下来了 在查询所有数据的时候方法是这样的 public List<User> findAll(){ ..... } 在它的u ...

  6. Hibernate框架Criteria查询

    本文章适合一些初学者 一.使用Criteria查询数据        1.条件查询            1.1:使用Criteria查询的步骤                    1.使用Sess ...

  7. hibernate不同条件查询结果集一样,主键@ID的原因

    这一周在翻新公司的老项目,遇到了一些预想不到的事情. 其中一个是,使用hibernate查询,不同的查询条件,居然都查到同一条记录,感觉奇怪了,开始以为是session的原因: 后来发现是hibern ...

  8. JAVA数据库处理(连接,数据查询,结果集返回)

    package john import java.io.IOException; import java.util.*; public class QueryDataRow { public Hash ...

  9. JDBC 资源绑定器 ,处理查询结果集

    使用资源绑定器绑定属性配置 实际开发中不建议把连接数据库的信息写死到Java程序中 //使用资源绑定器绑定属性配置 ResourceBundle bundle = ResourceBundle.get ...

随机推荐

  1. python PIL Image模块

    原地址:http://hi.baidu.com/drunkdream/item/9c9ac638dfc46ec6382ffac5 实验环境: windows7+python2.6+pycrust+PI ...

  2. ubuntu下安装rpm 文件

      正想着如何把rpm package 安装到ubuntu上, 发现了这篇文章,转载一下 Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb. sudo a ...

  3. mongo安全:增加用户名密码

    0.简述:在非auth下创建账户,然后重启 1.以不需要用户名密码的方式启动mongodb 2.运行客户端mongo,输入以下指令 show dbs;use admin;db.createRole({ ...

  4. python-program

    程序需要一步步改进,解决bug,尽量从源头判断,并给出处理措施. 1.客户端执行一次,程序就退出, 2.客户端空值,错误命令,程序会死掉 3.收发缓冲区大小,即recv(1024)的问题,如果收一个1 ...

  5. .net调用java写的WebServise时方法总是返回空的问题

    解决方法如下: 直接用wsdl.exe根据描述文件生成代理类来调,可避免这样的问题. 同时附上,wsdl工具在.net菜单中的配置方法,参考园友: http://www.cnblogs.com/qfb ...

  6. [Nginx] - PHP+FPM相关的配置

    CodeIgniter的配置: worker_processes ; events { worker_connections ; } http { include mime.types; defaul ...

  7. CANVAS 水波动态背景

    参考:https://github.com/cyclegtx/wave_background 做的水波背景,以后可能会用到哈! 效果如下: 代码如下: <!DOCTYPE html> &l ...

  8. Lua学习---Lua的控制结构

    前言 由于之前有c/c++.javascript基础,所以学Lua的时候喜欢拿来和前面的语言比较,这里主要和C比较 1.if...else Lua的if语句格式: if 条件 then 条件成立,运行 ...

  9. 影响性能的关键部分-ceph的osd journal写

    在前面一篇文章中,我们看到,当使用filestore时,osd会把磁盘分成data和journal两部分.这主要是为了支持object的transaction操作.我的想法是,ceph需要具有数据保护 ...

  10. 转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”

    转自:http://jeromecen1021.blog.163.com/blog/static/18851527120117274624888/ 面试题目: 地球人都知道,Java有个东西叫垃圾收集 ...