HQL 定义一些可用的标准功能,无论使用的底层数据库是什么。HQL 也可以了解方形图和应用程序中定义的其他功能。

4.6.1. 关于 HQL 标准化功能

无论使用的底层数据库是什么,HQL 中都提供以下功能:

表 4.3. HQL 标准化功能功能描述

BIT_LENGTH

返回二进制数据的长度。

CAST

执行 SQL 广播.cast 目标应命名为要使用的 Hibernate 映射类型。

EXTRACT

根据日期时间值执行 SQL 提取.提取将返回日期/时间值的一部分,如当年。请参见以下简写表格。

SECOND

用于提取第二个的缩写提取表单。

MINUTE

用于提取分钟的缩写提取表单。

HOUR

用于提取小时的缩写提取表单。

DAY

用于提取日期的缩写提取表单.

用于提取月份的简短提取表单。

用于提取年度的简短提取表单.

STR

转换值作为字符数据的简写形式。

4.6.2. 关于 HQL 非标准化功能

Hibernate 拨号可以注册已知可用于该特定数据库产品的其他功能。它们只有在使用该数据库或拨号时才可用。以数据库可移植性为目标的应用应避免在此类别中使用函数。

应用程序开发人员还可以提供自己的一组功能。这通常代表自定义 SQL 函数或 SQL 片段的别名。此类功能声明通过使用 org.hibernate.cfg.Configuration 的 addSqlFunction 方法进行。

4.6.3. 关于连接操作

HQL 除了支持串联(CONCAT)功能外,还定义了串联运算符。这没有被 Jakarta Persistence 查询语言定义,因此便携式应用应避免使用它。连接运算符取自 SQL 串联运算符(||)。

示例:连接操作示例

Copy to Clipboard

Copied!

Toggle word wrap

Toggle overflow

select 'Mr. ' || c.name.first || ' ' || c.name.last

from Customer c

where c.gender = Gender.MALE

select 'Mr. ' || c.name.first || ' ' || c.name.last

from Customer c

where c.gender = Gender.MALE