兔八哥笔记14(1):Hibernate 查询语言(HQL)

兔八哥笔记11:怎样连接到WebLogic的内置LDAP上? 兔八哥笔记11:怎样连接到WebLogic的内置LDAP上?        我们知道LDAP Server中能够存储数据,但我们怎么能够看到LDAP Server中存储了哪些内容呢?答案有2个,一个是使用LDAP Brower,另一个是自己写代码。我们这篇笔记只介绍怎样使用LDAP Brower来查看LDAP Server中的内容。LDAP客户端有很多种,BEA的文档中就提到一种,但我 阅读详情

兔八哥笔记14(1):Hibernate 查询语言(HQL)

 

                     邮箱:ltf_ty@163.net

 

本文翻译自Hibernate的文档第10章《Hibernate Query Language》。

 

       Hibernate拥有一种功能非常强大的查询语言,这种语言被有意得与SQL非常相似,便于开发人员掌握。但不要被HQL的语法表面所迷惑,HQL完全是面向对象的,可以用来过程多态、继承、关联等关系。

 

10.1大小写敏感(Case Sensitivity)

    HQL中的使用的Java的类名和属性名是大小写敏感的,其他的关键字都是大小写不敏感的。所以“SeLeCT”等同与“sELEct”,也等同于“SELECT”,因为它不是Java类名,也不是Java类的属性名。但Java类net.sf.hibernate.eg.FOO不等同于net.sf.hibernate.eg.Foo,同样foo.barSet也不等同于foo.BARSET。

    在本手册中,HQL中的关键字均采用小写,一些用户可能发现HQL的关键字采用大写更易读,但我们也发现,当把这些HQL嵌入Java代码中,看起来很丑陋。

10.2from从句(The from clause)

Hibernate中最简单的from查询可能是:

from eg.Cat

只是简单的返回eg.Cat类的所有实例。

在很多时候你可能需要为类设置别名(alias),因为你可能需要在查询的其他部分引用Cat。

from eg.Cat as cat

关键字as是可选的,我们也可以写成:

from eg.Cat cat

可以出现多个类,然后返回一个“笛卡儿积”或交叉连接:

from Formula as form, Parameter as param

HQL中的别名用小写字母是一个好习惯,符合Java本地变量的命名规范。

10.3关联和连接(Associations and joins)

       我们使用别名关联实体、甚至用join来关联值的集合的元素。

from eg.Cat as cat

    inner join cat.mate as mate

    left outer join cat.kittens as kitten

 

from eg.Cat as cat left join cat.mate.kittens as kittens

 

from Formula form full join form.parameter param

支持的连接类型借鉴自ANSI SQL:

·                                 inner join

·                                 left outer join

·                                 right outer join

·                                 full join (不常用)

inner join, left outer join和right outer join可以简写。

from eg.Cat as cat

    join cat.mate as mate

    left join cat.kittens as kitten

另外,一个“fetch”连接允许使用单连接来关联或值的集合,使它们可以和父对象一起来初始化。这在使用Collection的情况下特别有用。

from eg.Cat as cat

    inner join fetch cat.mate

    left join fetch cat.kittens

    fetch join通常不需要设置别名,因为被关联的对象不应该被用在where从句中,也不能用在其他的任何从句中。

    被关联的对象不能直接在查询结果中返回,他们可以通过父对象来访问。

请注意:在目前的实现中,在查询中只能返回一个集合。另外还要注意,fetch可能不用在被scroll()和iterator()调用的查询中。最后还要注意,full join fetch和right join fetch是没有意义的。

10.4 select从句(The select clause)

select从句用来挑选在结果集中返回的对象和属性:

select cat.mate from eg.Cat cat

上面这个查询返回所有猫的配偶。

你也可以使用elements函数返回集合的元素。下面的查询将返回任何猫(Cat)的所有小猫(Kitten)。

select elements(cat.kittens) from eg.Cat cat

查询也可以返回任何值类型(包括Component类型的属性)的属性:

select cat.name from eg.DomesticCat cat

where cat.name like 'fri%'

select cust.name.firstName from Customer as cust

查询可以返回多个对象,也可以返回作为Object[]类型的数组的属性。

select mother, offspr, mate.name

from eg.DomesticCat as mother

    inner join mother.mate as mate

    left outer join mother.kittens as offspr

或者作为一个实际的Java对象:

select new Family(mother, mate, offspr)

from eg.DomesticCat as mother

    join mother.mate as mate

    left join mother.kittens as offspr

上面的这个查询语句假设Family类有适当的构造函数。

10.5 聚集函数(Aggregate functions)

查询可以使用属性的聚集函数:

select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)  from eg.Cat cat

select从句的聚集函数中可以出现集合:

select cat, count( elements(cat.kittens) )  from eg.Cat cat group by cat

支持的聚集函数有:

·                                 avg(...), sum(...), min(...), max(...)

·                                 count(*)

·                                 count(...), count(distinct ...), count(all...)

distinct 和all关键字的意义与用法和SQL中相同:

select distinct cat.name from eg.Cat cat

 

select count(distinct cat.name), count(cat) from eg.Cat cat

 

10.6 多态(polymorphism)

       一个查询:from eg.Cat as cat,它返回的不只是Cat,也有DomesticCat(家猫)这样的子类。Hibernate可以在from从句中指定任何Java类和接口,查询将返回继承自该类和实现了该接口的所有的持久类的实例。下面的查询将返回所有持久的对象:

from java.lang.Object o

       指定的接口可以被多个不同的持久类实现:

from eg.Named n, eg.Named m where n.name = m.name

注意最后2个查询将需要超过1个SQL的select,这意味着不能够按照从句指定的排列次序排列整个结果集。这也意味着你不能用Query.scroll()来调用这些查询。

SAP Workflow审批功能实例详细过程 阅读详情

相关推荐

Retinanet训练自己的数据(2):模型准备

  在上一篇博客中,我们已经处理好了模型需要的数据集,下一步就是准备模型去训练数据。这里提醒一句,在制作数据时,最好将训练集和测试集人为分开。像Google tensorflow API,在制作数据时可以按比例自动生成,但是在上一篇文章中产生的数据(annotation.csv )其实都是用来训练的,如果你把自己的数据集全都转换了,那么恭喜你,最后你会发现没有数据集去测试了。   下面开始模型准...

mingyang_wang的博客 5884

Hibernate: select roles0_.ADMIN_ID as ADMIN2_1_, roles0_.ROLE_ID as ROLE1_1_,

在hibernate中映射多对多中,查询ADMIN_INFO表连带出roles的属性时报错,我仔细检查了映射的XML文件对比数据库都没问题,求大神帮忙解决下呀

qq_40333063的博客 1624

Contest 226 - C - Martial artist

from atcoder Problem Statement Time Limit: 2 sec / Memory Limit: 1024 MB Score :300300points Takahashi is a martial artist. There areNNmoves that a martial artist can learn, called Move11,22,\ldots…,NN. For each1 \leq i \leq N1≤i≤N, it takes...

m0_54674275的博客 1020

兔八哥笔记31:AppFuse之创建DAO

创建DAO本章将向你展示怎样创建用来表现Table的数据的Java对象和一个持久化数据的Java类. 关于本章这部分将向你展示怎样创建一个新表, 然后怎样创建访问这个表的Java代码. 我们将创建一个对象,和一些将这个对象持久化(添加、修改、删除)到数据库的类。根据Java的惯例, 我们称这个对象为Plain Old Java Object (POJO ). 这个对象主要代

兔八哥的狗窝 6843

软件缺陷(定义+表现形式+优先级+信息+产生原因),看完这篇文章就懂了

软件缺陷软件缺陷的定义软件缺陷的表现形式软件缺陷产生的原因软件缺陷的根源软件缺陷的费用软件缺陷的信息 软件缺陷的定义 IEEE 1983 of IEEE Stardard 729中软件缺陷做了一个标准的定义: 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。 因此软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,没有满足用户的需求。 缺陷不是bug,缺陷包含bug,缺陷的范围更大。 软件缺陷

qq_40676418的博客 1万+

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 257

Borland: Delphi,亲爱的,让我们道声再见!

                   今天才知道Borland要把IDE都卖了,虽然我知道Borland这几年的日子不好过,但从没有怀疑过他会卖掉给自己带来金字招牌的Delphi、C++Builder、JBuilder……,总之IDE都卖了,那在我们这些开发人员的心中Borland还有什么价值?当然他们还有ALM,但这个东西感觉不像IDE那样实在,有点像屠龙之技,有时候学了不一定能用上,有

兔八哥的狗窝 6495

vscode中使用PlatformIO创建工程加载慢

解决使用VSCODE+PlatformIO中,第一次新建工程一直加载的问题

Reasally的博客 4979

兔八哥笔记30:AppFuse之主要Ant任务

AppFuse的Ant任务This page contains a listing of the most common Ant targets in AppFuse that I use in my daily development. For a complete list of tasks, type "ant -projecthelp" at the command line.

兔八哥的狗窝 6036

模拟CMOS 第2章 MOS器件物理基础

模拟CMOS 第2章 MOS器件物理基础 文章目录模拟CMOS 第2章 MOS器件物理基础2.1 基本概念2.1.1 MOSEFT开关2.1.2 MOSEFT结构2.1.3 MOS符号2.2 MOS的I/V特性2.2.1 阈值电压2.2.2 I/V特性的推导2.3 二级效应2.4 MOS器件模型2.4.1 MOS器件版图2.4.2 MOS器件电容2.4.3 MOS小信号模型2.4.4 MOS SPICE模型2.4.5 NMOS与PMOS器件的比较2.4.6 长沟道器件与短沟道器件的比较附录A 用作电容器MO

椰子奶糖的博客 5206

【七.三维视觉与视频分析】【1.点云处理:PointNet++/PointTransformer】

各位老铁,今天咱们要聊的可不是普通的二维图像处理,而是三维视觉领域最硬核的技术——点云处理。从最早的PointNet到如今的PointTransformer,这场技术进化堪比三维版的"像素革命"。今天咱们就深入解剖两大里程碑:PointNet++和PointTransformer,保证让你看完全文就能在点云领域横着走!想象一下,你抓了把沙子撒在空中,每粒沙子的位置都是三维坐标——这就是点云的典型形态。最后送大家一句话:点云处理就像在三维宇宙中寻找星辰的轨迹,既要望远镜的宏观视野,也要显微镜的细致入微。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 474

记事贴1:今天遇到的问题!

Oracle9i带的JRE为1.3,而且安装后会占据环境变量path的第一项,解决办法是将这项移到path的最后一项。如果使用DBUnit向Oracle中添加数据,如果你的用户的权限是DBA,并且在不同的用户下有同名的表,则DBUnit会不知道该向那个表插入,只要将用户权限降低就行了,另外还要注意有外键的表的插入数据的先后次序。我的用户的角色是:CONNECT和RESOURCE系统权限是:UNLI

兔八哥的狗窝 5336

某音私信接口二进制解析

本文探讨了某音私信接口的二进制请求处理过程,重点分析了请求体中的非文本字符和混合编码结构。文章详细描述了编码过程,包括使用Protocol Buffers的序列化方法将结构化数据转换为字节流,并通过Uint8Array包装成二进制数组。作者展示了如何提取和补全s.encode方法,并将其转化为Base64字符串以便在Python中解码执行

码王吴彦祖的博客 903

兔八哥笔记14(2):Hibernate 查询语言(HQL)

 兔八哥笔记14(2):Hibernate 查询语言(HQL)  10.7 where从句(The where clause)       where从句是你可以按照自己指定的条件更精确的返回实例:from eg.Cat as cat where cat.name=Fritz 复合表达式使where从句功能非常强大:from eg.Cat as cat where ca

兔八哥的狗窝 5256

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

记事贴4:Java中的日期处理真是烂!

我想得到当前日期,然后将当前日期加上某一个整数,得到下一个日期,我今天在测试过程中发现Date类不好用,今天是2005-01-14,我想得到前28天的日期,我写了个方法: //传入一个int的时间,经和当前日期相加或者相减,得到一个新日期// public static String strToDateByInt(int i, String operator) {//  long j = 0;//

兔八哥的狗窝 5121

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

兔八哥笔记2:JavaScript Editor简介

最近因为使用Domino开发一个政府OA系统,所以需要学习JavaScript,用惯了Delphi这类工具的编辑器,但写JS却不知道有什么好工具可以减少我输入那些烦人的这类的语句。昨天随手翻看了一本清华出的讲解JS的书,发现上面介绍一个写JS的叫JavaScript Editor的工具。据说还是中国人写的,我立刻就到网上查找,很快就搜到一堆,有2个JavaScript Editor,一个是书中

兔八哥的狗窝 2728

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

兔八哥笔记10:WebLogic的内置LDAP控制访问语法

兔八哥笔记10:WebLogic的内置LDAP控制访问语法      这几天在研究WebLogic Server 的LDAP Server的用法,Weblogic Server中有一个内置的LDAP Server,当然你也可以使用Weblogic Server集成第三方的LDAP Server,如Open LDAP、Netscape iPlanet, 微软的 Active Direct

兔八哥的狗窝 2605

兔八哥笔记5:WebLogic Server 8.1上Web应用的部署

 兔八哥笔记5:WLS8.1上Web应用的部署                                                               E-Mail: ltf_ty@163.net 昨天刚参加完BEA的dev2dev大会,领到一份WebLogic Platfor8.1的使用版,今天立刻装上了,用了一会发现,WLS8.1和WLS7.0有些区别,我暂

兔八哥的狗窝 2602

兔八哥笔记12:定制你的LDAP目录的Schema

兔八哥笔记12:定制你的LDAP目录的Schema  第一部分:理解LDAP的Attribute LDAP之所以成功或之所以流行的原因是LDAP可以存储很多种类型的信息。而LDAP的Schema定义并控制了LDAP中可以存储什么样的数据。作者的这一系列文章包括4部分,这是第三部分。1.什么是LDAP的Schema?在LDAP目录中,Schema是定义的Attribute

兔八哥的狗窝 2069

兔八哥笔记1:java初学者笔记

  1.JDK的配置:Path:c:/jdk1.4/bin; (目的是在任何位置都可以执行javac, java, jar等命令)ClassPath:.;c:/jdk1.4/lib/dt.jar;C:/jdk1.4/lib/tools.jar;c:/jdk1.4/lib/j2ee.jar;注意:“.”代表当前路径。j2ee.jar包括了servlet等类,否则可能出现编译servl

兔八哥的狗窝 1695

兔八哥笔记14(3):Hibernate 查询语言(HQL)

  兔八哥笔记14(3):Hibernate 查询语言(HQL)  10.11 子查询(Subqueries)       Hibernate支持子查询,子查询必须用圆括号包围。子查询通常被SQL聚集函数调用。子查询中引用一个外部查询的别名也是被允许的。from eg.Cat as fatcat where fatcat.weight > (     select avg(ca

兔八哥的狗窝 1685

兔八哥笔记7:WebLogic Platform8.1使用点滴(1)

兔八哥笔记7:WebLogic Platform8.1使用点滴(1) 这篇笔记主要整理了WLS中怎样设置系统默认页,和Workshop的域的配置,如有错误,请指正!一.WLS中默认页的设置。用过Tomcat、WLS、Apache的朋友都知道,当服务器启动后,在IE中输入http://localhost:端口号,就会有一个默认页显示出来,有一位朋友(如果我没记错他的用户名为_I_)问

兔八哥的狗窝 1660

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 295

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 326

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 351
上一篇: 兔八哥笔记13:我的2003
下一篇: 兔八哥笔记14(2):Hibernate 查询语言(HQL)
ltf_ty
博客等级 码龄25年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值