Hibernate hql 查询指定字段并获取结果集
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 查询指定字段并获取结果集相关推荐
- SpringBoot使用JPA多表关联动态查询指定字段
SpringBoot使用JPA多表关联动态查询指定字段 目标需求 Maven依赖 项目结构 代码 运行结果 源码下载 目标需求 在SpringBoot中用JPA实现多表关联动态查询,并且只查询指定字段 ...
- Mybatis-plus 查询指定字段 select
Mybatis-plus 查询指定字段 select 表结构 CREATE TABLE `user` (`id` bigint(20) NOT NULL COMMENT '主键',`name` var ...
- jango model.obejcts.filter 查询指定字段
django model.obejcts.filter() 查询指定字段 model.obejcts.filter(key=value).values('field_name') 返回: [{'fie ...
- mongo go 查询指定字段_Go语言 操作MongoDB数据库批量查询
数据操作是编程中避免不了的操作,这也就牵扯到了数据库的增删改查,而实际工作中我们最常用到的是增改查.今天要介绍的是Go 语言查询MongoDB数据库. 操作mongodb使用的包是"http ...
- Hibernate 学习笔记(二)—— Hibernate HQL查询和 QBC 查询
目录 一.Hibernate 的 HQL 查询 1.1.查询所有数据 1.2.条件查询 1.3.排序查询 1.4.统计查询 1.5.分页查询 1.6.投影查询 二.Hibernate 的 QBC 查询 ...
- lambdaquerywrapper查询指定字段_MongoDB系列 | 高级查询与索引(四)
1 . 覆盖索引查询 所有的查询字段都是索引的一部分:所有的查询返回字段在同一个索引中. 由于索引存在于 RAM 中,因而从索引中获取数据要比扫描文档更快. 范例: 创建如下 users 集合(使用 ...
- mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!
总览 我们将讨论如何使用PyMongo库查询MongoDB数据库. 我们将介绍MongoDB中的基本聚合操作. 介绍 随着互联网的全球普及,我们现在正在以前所未有的速度生成数据.因为执行任何类型的分析 ...
- MySQL查询指定字段
MySQL,可以在SELECT语句的字段列表中指定,要查询的字段. SELECT 字段名1,字段名2,-- FROM 表名: 查询student表中,name字段和gender字段的数据 注意,如果在 ...
- mysql 查询指定字段数据_MySQL使用select语句查询指定表中指定列(字段)的数据
本文介绍mysql数据库中执行select查询语句,查询指定列的数据,即指定字段的数据. 再来回顾一下sql语句中的select语句的语法: select 语句的基本语法: select from w ...
最新文章
- aida64副屏监控_“遥信”在电力监控系统中的重要作用
- 常考数据结构与算法:数组中未出现的最小正整数
- GENTLE.NET快速上手
- COMSOL—— LiveLink for MATLAB学习1
- Redhat 7 进入救援模式
- SPSS软件数据中心化、标准化和归一化
- 区块链游戏——开发平台总览:EOSIO
- RTEC机器人_广东省中小学电脑机器人活动获奖结果公布
- 85D - Sum of Medians
- Spel表达式,${property:defaultValue}
- WIN7下使用iis搭建php环境(上)
- openwrt查看linux内核,OpenWrt教程-如何升级linux内核版本
- AndroidInputSystem
- idea中执行“npm”命令,提示‘npm‘ 不是内部或外部命令,也不是可运行的程序
- 趣图 | 一图详解520最强脱单攻略!
- matlab导出畸变系数,鱼眼镜头参数表,如何拟合并求出系数
- BSA分析拟南芥F2代分离群体混池测序
- SQL入侵基础知识(一)
- 学校的论文答辩---问题准备
- linux dock工具,六个ubuntu下的mac dock工具栏
热门文章
- C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数引擎 vs rand 函数
- 《研磨设计模式》chap15 组合模式(2)改写示例+总结
- 机器学习(一)——熟悉tensorflow2.0
- JavaScript之自定义对象
- SMMU学习这一篇就够了
- [工具]-文件明文导出工具
- optee中添加一个中断以及底层代码的相关解读
- optee堆Virtualization(hypervisor)的支持
- vs 正则表达式替换
- 软件调试学习笔记(一)—— 调试对象