HQL的使用-part2 hql的查询(4)

Hive元数据信息表详解 hive元数据表的基本情况 阅读详情

4.6.1 HQL 查询(4)

7. orderby 子句

查询返回的列表(list),可以根据类或引用属性的任何属性来进行排序,例如:from Person as porder by p.name, p.age还可使用ase 或 dese关键宇指定升序或降序的排序规则,例如:

from Person as porder by p.name asc, p.age desc

如果没有指定排序规则时,默认采用升序规则。与是否使用asc 关键字没有区别,加 asc 是升序排序,不加asc 也是升序排序。

8. group by子句

利用返回聚集值的查询,可以对持久化类或引用属性的属性进行分组,分组时可使用 groupby 子句。看下面的HQL查询语句:

select cat.color, sum(cat.weight) , count(cat)
from Cat catgroup by cat.color

类似于 SQL 的规则,出现在 select 后的属性要么出现在聚集函数中,要么出现在group by 的属性列表中。看下面示例:

//select 后出现的 id 处出现在 group by 之后,而 name 属性则出现在聚集函数中
select foo.id,avg(且arne) , max(name)
from Foo foo join foo.names namegroup by foo. id

having子句用于对分组进行过滤,例如:

select cat.color, sum(cat.weight) , count(cat)from Cat catgroup 
by cat.colorhaving cat.color in (eg.Color.TABBY, eg.Color.BLACK)

注意: having子句用于对分组进行过滤,因此having子句只能在有groupby 子句时才可以使用,没有groupby 子句,则不能使用having子句。

Hibernate可将 HQL语句直接翻译成数据库SQL语句。因此,如果底层的数据库支持在having和 groupby子句中出现的一般函数或聚集函数,则HQL的 having与 orderby子句中也可以出现一般函数和聚集函数。例如:

select catfrom Cat catjoin cat.kittens kittengroup by 
cathaving avg(kitten.weight)
> 100order by count(kitten) asc, sum(kitten.weight) desc

注意:group by 子句与 orderby 子句中都不能包含算术表达式。

9. 子查询

如果底层数据库支持子查询,则可以在HQL 语句中使用子查询。与 SQL 中子查询相似的是, HQL 中的子查询也需要使用 "0" 括起来。例如:

from Cat as fatcatwhere fatcat.weight > 
( select avg(cat.weight) from DomesticCat cat)
如果 select 中包含多个属性,则应该使用元组构造符:
from Cat as catwhere not ( cat.name, cat.color )in(
select cat.name, cat.color from DomesticCat cat

10. fetch 关键字

对于集合属性, Hibernate 默认采用延迟加载策略。例如,对于持久化类Person,有无法访问关联的 scores 属性。

为了解决该问题,可以在Hibetτlate 映射文件中取消延迟加载,或者使用 fetchjoin。例如:

from Person as p join p.scores

上面的fetch语句将会初始化person 的 scores集合属性。

如果使用了属性级别的延迟加载,可以用fetchall properties 来强制 Hibernate 立即抓取那些原本需要延迟加载的属性。例如:

from Document fetch all properties order by namefrom Document
doc fetch allpropertieswhere lower(doc.name)like'%cats%

11.命名查询

HQL 查询还支持将查询所用的HQL语句放入配置文件中,而不是代码中。通过这种方式,可以大大提高程序的解祸。

下面是使用que可元素定义命名查询的配置文件代码:

<!定义命名查询-->
<query name="myNamedQuery">
<!--此处确定命名查询的HQL语句一〉
from Person as p where p.age > ?
</query>
该命名的HQL查询可以直接通过Session访问,调用命名查询的示例代码如下:
private void findByNamedQuery() throws Exception
//获得 Hibernate Session对象
Session sess = HibernateUtil.currentSession();
//开始事务
Transaction tx = sess.beginTransaction();
System.out.println("执行命名查询");
//调用命名查询
List pl =sess.getNamedQuery( 叮nyNamedQuery")
//为参数赋值
.setinteger(O, 20)
//返回全部结果
.list();
1I:ll!i历结果集for(iteratorpit = pl.iterator() ; pit.hasNext(); )
Person p = ( Person )pit.next();
System.out.println(p.getName() ;
/I提交事务
tx.commit();
HibernateUtil.closeSession();

数据治理中的元数据采集(从Hive元数据库中获取ods层表的元数据信息) 最近在做的数据治理项目中有个业务需求是:从hive的元数据库中获取到贴源层(也就是ods层)下所有表的元数据信息,这里大致描述一下实现的过程。 一、前期准备知识: Hive元数据信息对应的MySQL数据库表 Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理。Hive的元数据信息在MySQL数据中有57张表: mysql> show tables; ±--------------------------+ | Tables_in_metastore_spark | ± 阅读详情

相关推荐

WOL唤醒配置(以太网、PHY、MAC)

MAC 就是以太网控制器,属于OSI的数字链路层。phy 属于OSI的物理层(Physical layer),所以叫phy。CPU Mac与phy通信通过MII接口,数据的传输通过MDIO数据线。通过配置phy的相关寄存器实现不同的功能。

qq_58264156的博客 8631

HQL的使用-part2 hql的查询(1)

 4.6 Hibernate 查询体系Hibernate 提供了异常强大的查询体系,有多种查询方式可以供我们使用。如Hibernate 的 HQL 查询或者使用条件查询,甚至可以使用原生的 SQL 查询语句等。另外还提供了一种数据过滤功能,这些都用于筛选目标数据。下面分别介绍 Hibernate 的四种数据筛选方法4.6.1 HQL 查询(1)HQL 是 HibernateQuer

801

告别信号干扰!用Altium Designer 19搞定4层/6层PCB叠层设计的保姆级流程

本文详细介绍了如何使用Altium Designer 19进行4层/6层PCB叠层设计,解决信号干扰问题。通过实际案例和系统方法论,涵盖高速数字电路、混合信号系统等典型场景的设计优化,帮助硬件工程师和学生掌握电磁兼容(EMC)与信号完整性(SI)的核心技术。

weixin_27076351的博客 206

HQL的使用-part2 hql的查询(2)

 4.6.1 HQL 查询(2)3. 聚集函数HQL 也支持在选出的属性上使用聚集函数。HQL 支持的聚集函数与 SQL 完全相同,有如下 5 种。avg: 计算属性平均值。count: 统计选择对象的数量。max:统计属性值的最大值。min: 统计属性值的最小值。sum: 计算属性值的总和。例如:select count(*) from Perso

720

Apache-Plc4x-Modbus-Tcp学习记录(一)

Apache-Plc4x-Modbus-Tcp学习记录(一)

weixin_45325423的博客 6988

BP神经网络回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)

BP神经网络回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 391

HQL的使用-part2 hql的查询(3)

 4.6.1 HQL 查询(3)6. 表达式HQL 的功能非常丰富,其where 子句后支持的运算符异常丰富,不仅包括SQL 的运算符,也包括EJB-QL的运算符等。where子句中允许使用大部分SQL支持的表达式。数学运算符+,-, *,1 等。二进制比较运算符=,>=,, !=, like 等。逻辑运算符 and,or,not 等。in, not in, between

834

【雷达通信】雷达信号处理仿真【含Matlab源码 2509期】

雷达信号处理仿真 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 904

Hive概述纲要、环境配置以及HQL使用

hive概述Hive产生背景Hive是什么为什么要使用Hivehive的数据结构hive的基本操作hive的数据类型hive 元数据Hive的体系架构 Hive部署架构Hive与RDBMS的关系、区别Hive的优缺点Hive适用场景hive存储文件格式和压缩Hive环境搭建hive概述hive是大数据仓库软件,它提供了sql的方式简化大数据mapreduce的数据读取写入统计。并提供了多种使用途径...

OnTheRoad的博客 1万+

麒麟系统无法进入单用户模式该怎么办?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 1820

HibernateCRUD基础框架(2)-HQL语句构造器(HqlQueryBuilder,HqlUpdateBuilder)

上篇讲述了最基本的实体类,本篇接着讲述HQL语句构造器,包括查询和更新等。优点:通过面向对象的方式构造HQL语句,更快捷,不需要手动拼接HQL。缺点:封装可能降低性能,只能支持常用的和较为简单的HQL构造。 部分功能不完善,待开发。1.HQL语句构造器package cn.fansunion.hibernate.sql; import org.apache.common...

weixin_30907523的博客 112

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1335

NHibernate(Part2)

In my last article, I introduced NHibernate, which is an open-source object/relational mapping framework newly available to .NET developers. I have been rightly criticized (both here and in other foru...

weixin_30729609的博客 139

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关于解决hibernate左连接关联查询不执行的问题

hql是这样的: String vrsql = "From VehicleRelevance as vr left join fetch vr.partRelevance as pr where vr.vehicle_id=1 and pr.part_id=2"; 但是pr.part_id是作为partRevelance标的外键 所以必须这样配置://这个字段作为外键多对一可以省略 但是作为

ahhmdwg的专栏 1669

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

转载:整合Struts+Hibernate+Spring应用开发详解

http://book.youkuaiyun.com/bookfiles/562/10056218647.shtml4.3  使用HQL查询Hibernate提供了异常强大的查询体系,使用Hibernate有多种查询方式。可以选择使用Hibernate的HQL查询,或者使用条件查询,甚至可以使用原生的SQL查询语句,此外还提供了一种数据过滤功能,这些都可用于筛选目标数据。下面分别介绍Hiberna

1197

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SQL进阶基础(面试基础)— Part 2

前言 本文原题及实验数据均出自:http://www.cnblogs.com/edisonchou/p/3886801.html,但本文是基于SQL Server的训练模型,经过笔者的简单改动,现用于训练SQL/HQL。本文只针对DML语句进行训练,原文中还有很多DDL训练,如有兴趣,可自行训练。 本题用到下面三个关系表: CARDS 借书卡。 ID卡号,NAME 姓名,CLASS 班级 ...

Data-Forest 498

大数据入门必学:Hive 数据仓库从入门到实战(图文详解)

如果你刚接触大数据,你一定听说过 Hive。它是大数据领域最常用的数据仓库工具之一,也是面试和工作中绕不开的重点。本文将从关系型数据库的局限讲起,逐步深入 Hive 的架构原理、数据模型、安装部署、常用操作,最后带你了解 HWI 和 HiveServer2 的部署与使用。关系型数据库(RDBMS)是建立在关系模型基础上的数据库,通俗地说,它由多张表组成,表与表之间通过主键/外键建立关联。记录(Row):数据行字段(Column):数据列表(Table):数据行的集合。

2601_96010888的博客 244

Hibernate Part5

Hibernate Strategy

qq_33840797的博客 213

BG.Hive - part1

1. Hive架构   What is hive?  Facebook,https://en.wikipedia.org/wiki/Apache_Hive   a> 一种工具,可以通过SQL轻松的访问数据,可以完成数据仓库任务,如ETL,报表及数据分析   b> 一种机制,增强多样化数据格式的结构   c> 数据访问,HDFS或者其他的数据存储系统(HBase)...

weixin_30270561的博客 203

Hibernate Part 2:单表CRUD

使用Hibernate实现单表CRUD,数据库使用MySQL建立customer表 create database test; create table customer ( id int primary key auto_increment, name varchar(20), age int, city varchar(20) );   创建JavaBean对象 ...

嬡仩岼疧嚡囡陔 119

Hibernate Part1

Hibernate Part1

qq_33840797的博客 296

达观数据文辉:Hadoop和Hive使用经验

近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上的行业标准之一。面对当今互联网产生的巨大的TB甚至PB级原始数据,利用基于Hadoop的数据仓库解决方案Hive早已是Hadoop的热点应用之一。达观数据团队长期致力于研究和积累Hadoop系统的技术和经验,并构建起了分布式存储、分析、挖掘以及应用的整套大数据处理平台。本文将从Hive的原理、架构及优化等方面来分享Hive的一些心得和使用经验,希望对大家有所收货。

达观数据 2837

[一起学Hive]之十五-分析Hive表和分区的统计信息(Statistics)

关键字:Hive统计信息、分析Hive表、Hive Statistics 类似于Oracle的分析表,Hive中也提供了分析表和分区的功能,通过自动和手动分析Hive表,将Hive表的一些统计信息存储到元数据中。 表和分区的统计信息主要包括:行数、文件数、原始数据大小、所占存储大小、最后一次操作时间等; 14.1 新表的统计信息 对于一个新创建的表,默认情况下,如果通过IN

thy822的专栏 1090

分布式数据库原理及技术

可以使用location子句指定表在 HDFS 上的存储路径,此时不会自动创建数据库.db/表名的层级目录,而是直接使用给定路径。要求:location 路径最好与默认管理体系一致,且精确到表名级别;建表时若有其他约束,location必须放在最后一行。此时 HDFS 上只有/testdb目录,不会出现。通常推荐的做法是让 location 的末级目录与表名一致,并放在数据库目录下,以便管理。

2403_86838294的博客 287
上一篇: HQL的使用-part2 hql的查询(3)
下一篇: Hibernate中Criteria的完整用法
EvaTian
博客等级 码龄19年 45粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值