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对象,还有为字段类型的值

最新文章

  1. codeforces 360 E - The Values You Can Make
  2. ios 宏定义 系统版本 判定
  3. JSON-RPC轻量级远程调用协议介绍及使用
  4. SQL Sever 身份验证 sa用户设置
  5. ViewPager切换动画
  6. System.getProperty()参数
  7. 华为OJ:素数对个数
  8. QQ音乐的请求
  9. matlab和C语言的break及continue测试
  10. setTimeout()方法,你真的懂吗?
  11. window10下安装linux虚拟机
  12. laravel5.5 env
  13. C# 生成海报,文本区域指定和换行,图片合成
  14. 微信小程序上传图片,视频及预览
  15. 今天刚学到truncate和delete的区别,做个总结吧
  16. Duolingo 提高用户留存率的6个手段
  17. mysql分区表之一:分区原理和优缺点【转】
  18. 并发工具类(二)同步屏障CyclicBarrier
  19. 实验一 命令解释程序cmd的编写
  20. JSP的学习二(请求转发与 重定向)

热门文章

  1. 转载: 查看HADOOP中一个文件有多少块组成及所在机器ip
  2. (document).height()、$(document).scrollTop()
  3. C++中利用数组对字符进行除重和排序
  4. 崽崽帮www.zaizaibang.com精选14
  5. tokudb引擎磁盘空间不足导致写入失败的调查
  6. 【MySQL】排序原理与案例分析
  7. 线程优先级抢占实验【RT-Thread学习笔记 3】
  8. asp.net下出现其中的组件“访问被拒绝”的解决方法
  9. 【总结】JS里的数组排序
  10. 传入url地址请求服务器api,浏览器显示图片