15.18. Row value 构造函数语法
优质
小牛编辑
130浏览
2023-12-01
HQL 支持 ANSI SQL
row value constructor
语法(有时也叫作 tuple
语法),即使底层数据库可能不支持这个概念。在这里我们通常指的是多值(multi-valued)的比较,典型地是和组件相关联。来看看一个定义了 name 组件的实体 Person:
from Person p where p.name.first='John' and p.name.last='Jingleheimer-Schmidt'
那是有效的语法,虽然有点冗长。我们可以使它更加简洁一点,并使用
row value constructor
语法:
from Person p where p.name=('John', 'Jingleheimer-Schmidt')
在
select
子句里指定这个也是很有用的:
select p.name from Person p
当使用需要比较多个值的子查询时,采用
row value constructor
语法也很有用处:
from Cat as cat
where not ( cat.name, cat.color ) in (
select cat.name, cat.color from DomesticCat cat
)
决定是否使用这个语法的一件因素就是:这个查询将依赖于元数据里的组件子属性(sub-properties)的顺序。