14.6. La clause select

La clause select sélectionne les objets et propriétés qui doivent être retournés dans le résultat de la requête. Soit :

select mate
from Cat as cat
    inner join cat.mate as mate

La requête recherchera les mates liés aux Cats. Vous pouvez explimer la requête d'une manière plus compacte :

select cat.mate from Cat cat

Les requêtes peuvent retourner des propriétés de n'importe quel type, même celles de type composant (component) :

select cat.name from DomesticCat cat
where cat.name like 'fri%'
select cust.name.firstName from Customer as cust

Les requêtes peuvent retourner plusieurs objets et/ou propriétés sous la forme d'un tableau du type Object[],

select mother, offspr, mate.name
from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr

ou sous la forme d'une 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

ou sous la forme d'un objet Java typé,

select new Family(mother, mate, offspr)
from DomesticCat as mother
    join mother.mate as mate
    left join mother.kittens as offspr

à condition que la classe Family possède le constructeur approprié.

Vous pouvez assigner des alias aux expressions sélectionnées en utilisant as :

select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n
from Cat cat

C'est surtout utile lorsque c'est utilisé avec select new map :

select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )
from Cat cat

Cette requête retourne une Map à partir des alias vers les valeurs sélectionnées.