http://www.hibernate.org/hib_docs/reference/zh-cn/html/queryhql.html#queryhql-select
查询可以返回任何值类型的函数,
select子句选择在结果集中返回哪些对象和属性。思考一下下面的例子:
select mate
from eg.Cat as cat
inner join cat.mate as mate
这个查询会选择出作为其它猫(Cat)朋友(mate)的那些猫。当然,你可以更加直接的写成下面的形式:
select cat.mate from eg.Cat cat
你甚至可以选择集合元素,使用特殊的elements功能。下面的查询返回所有猫的小猫。
select elements(cat.kittens) from eg.Cat cat
查询可以返回任何值类型的属性,包括组件类型的属性:
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有一个合适的构造函数。