查询语句可以返回值为任何类型的属性或对象,包括返回类型为某种组件(Component)的属性:
select cust.name.firstName from Customer as cust
select cat.mate from Cat cat
查询语句可以返回多个对象和(或)属性,存放在 Object[] 队列中:
select mother , offspr , mate.name
from DomesticCat as mother
inner join mother.mate as mate
left join mother.kittens as offspr
或存放在一个List 对象中:
select new list (mother, offspr, mate.name)
from DomesticCat as mother
inner join mother.mate as mate
left outer join mother.kittens as offspr
也可能直接返回一个实际的类型安全的Java对象(假设类Family 有一个合适的构造函数 ):
select new Family( mother, mate, offspr)
from DomesticCat as mother
join mother.mate as mate
left join mother.kittens as offspr
也可以使用关键字as 给“被选择了的表达式”指派别名:
select max(bodyWeight) as max , min(bodyWeight) as min , count(*) as n
from Cat cat
这种做法在与子句select new map 一起使用时最有用:
select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )
from Cat cat