Hibernate hql 查询指定字段并获取结果集


在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况:

  • 1.查询全部字段的情况下,如”from 实体类”,list中封装的对象为实体类本身,各属性都将得到填充。
  • 2.只查询一个字段,默认情况下,list中封装的是Object对象。
  • 3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。

对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。比较简单的解决方法是:

  • の:在hql中使用select new 包名.类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。
  • の:hql查询多表部分字段,select new 包名.表1实体类名(表1.属性1,表2.属性2……) from 表1实体类,表2实体类 where 表1.ID=表2.ID(即相关联的字段),同时在要返回的表1实体类中添加表2的属性和带参的构造方法,参数的个数和顺序与(表1.属性1,表2.属性 2……) 保持一致

    注意:一般可以不加包名,比如:
    1.有包名时
    select new com.java.pojo.Problem(pid,score,title,totalAccept,totalSubmission) from Problem
    2.可以简略为不加包名
    select new Problem(pid,score,title,totalAccept,totalSubmission) from Problem但是如果使用不加包名的语句时,一直报异常时,说明表名与内部存在冲突,此时包名不能省略。
    

例如要查询Problem 中的pid,score,title,totalAccept,totalSubmission,unSee

伪代码

public class Problem {  private int pid;  private int score;  private int timeLimit;  private int memoryLimit;  private int totalAccept;  private int totalSubmission;  private int unSee;  private String title;  private String description;  private String input;  private String output;  public Problem(int pid, int score,String title, int totalAccept, int totalSubmission,  int unSee) {  super();  this.pid = pid;  this.score = score;  this.totalAccept = totalAccept;  this.totalSubmission = totalSubmission;  this.unSee = unSee;  this.title = title;  }  //省略getter 和 setter
}  

查询语句如下

Query query=session.createQuery("select new Problem(pid,score,title,totalAccept,totalSubmission,unSee) from Problem order by pid");  //query.setFirstResult(firstResult); //分页函数
//query.setMaxResults(maxResutl);   List<Problem> problems=query.list();//返回的还是Problem对象

关于hibernate的问题:
我现在有条
hql=”select s.id,s.name,t.id,t.name from User s,Useraddress t where t.id=s.id”

这条sql里面的User和Useraddress是两个实体类,现在组合查询分别取出来两个实体类里面的两个字段,然后我想再建立一个实体类Result,里面定义这四个结果集里面的字段,能不能执行完这条hql,正好把这个结果集对应到实体类Result里面呢,Result这个实体类,没写映射文件Result.hbm.xml.

希望能帮下忙

2种做法

方法一:创建实体类

创建一个class temp ,有属性sid,name,tid,sname,tname

创建一个构造函数

public temp(sid,name,tid,sname,tname)
{.....  }

hql中

List<temp>

select new temp(s.id,s.name,t.id,t.name) from User s,Useraddress t where t.id=s.id

方法二:List

记录的每一行是object[] 遍历
object[0] ==s.id
object[1] ==s.name
object[2] ==t.id
object[3] ==t.name

Hibernate hql 查询指定字段并获取结果集相关推荐

  1. SpringBoot使用JPA多表关联动态查询指定字段

    SpringBoot使用JPA多表关联动态查询指定字段 目标需求 Maven依赖 项目结构 代码 运行结果 源码下载 目标需求 在SpringBoot中用JPA实现多表关联动态查询,并且只查询指定字段 ...

  2. Mybatis-plus 查询指定字段 select

    Mybatis-plus 查询指定字段 select 表结构 CREATE TABLE `user` (`id` bigint(20) NOT NULL COMMENT '主键',`name` var ...

  3. jango model.obejcts.filter 查询指定字段

    django model.obejcts.filter() 查询指定字段 model.obejcts.filter(key=value).values('field_name') 返回: [{'fie ...

  4. mongo go 查询指定字段_Go语言 操作MongoDB数据库批量查询

    数据操作是编程中避免不了的操作,这也就牵扯到了数据库的增删改查,而实际工作中我们最常用到的是增改查.今天要介绍的是Go 语言查询MongoDB数据库. 操作mongodb使用的包是"http ...

  5. Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询

    目录 一.Hibernate 的 HQL 查询 1.1.查询所有数据 1.2.条件查询 1.3.排序查询 1.4.统计查询 1.5.分页查询 1.6.投影查询 二.Hibernate 的 QBC 查询 ...

  6. lambdaquerywrapper查询指定字段_MongoDB系列 | 高级查询与索引(四)

    1 . 覆盖索引查询 ​所有的查询字段都是索引的一部分:所有的查询返回字段在同一个索引中. 由于索引存在于 RAM 中,因而从索引中获取数据要比扫描文档更快. 范例: 创建如下 users 集合(使用 ...

  7. mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!

    总览 我们将讨论如何使用PyMongo库查询MongoDB数据库. 我们将介绍MongoDB中的基本聚合操作. 介绍 随着互联网的全球普及,我们现在正在以前所未有的速度生成数据.因为执行任何类型的分析 ...

  8. MySQL查询指定字段

    MySQL,可以在SELECT语句的字段列表中指定,要查询的字段. SELECT 字段名1,字段名2,-- FROM 表名: 查询student表中,name字段和gender字段的数据 注意,如果在 ...

  9. mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据

    本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...

最新文章

  1. aida64副屏监控_“遥信”在电力监控系统中的重要作用
  2. 常考数据结构与算法:数组中未出现的最小正整数
  3. GENTLE.NET快速上手
  4. COMSOL—— LiveLink for MATLAB学习1
  5. Redhat 7 进入救援模式
  6. SPSS软件数据中心化、标准化和归一化
  7. 区块链游戏——开发平台总览:EOSIO
  8. RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
  9. 85D - Sum of Medians
  10. Spel表达式,${property:defaultValue}
  11. WIN7下使用iis搭建php环境(上)
  12. openwrt查看linux内核,OpenWrt教程-如何升级linux内核版本
  13. AndroidInputSystem
  14. idea中执行“npm”命令,提示‘npm‘ 不是内部或外部命令,也不是可运行的程序
  15. 趣图 | 一图详解520最强脱单攻略!
  16. matlab导出畸变系数,鱼眼镜头参数表,如何拟合并求出系数
  17. BSA分析拟南芥F2代分离群体混池测序
  18. SQL入侵基础知识(一)
  19. 学校的论文答辩---问题准备
  20. linux dock工具,六个ubuntu下的mac dock工具栏

热门文章

  1. C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数引擎 vs rand 函数
  2. 《研磨设计模式》chap15 组合模式(2)改写示例+总结
  3. 机器学习(一)——熟悉tensorflow2.0
  4. JavaScript之自定义对象
  5. SMMU学习这一篇就够了
  6. [工具]-文件明文导出工具
  7. optee中添加一个中断以及底层代码的相关解读
  8. optee堆Virtualization(hypervisor)的支持
  9. vs 正则表达式替换
  10. 软件调试学习笔记(一)—— 调试对象