2009-03-20 7 views
9

J'ai 2 entités: voiture et roues (oneToMany) et je veux récupérer ma voiture, avec toutes les roues et (c'est la partie difficile) commandé par roues.location. Le code ci-dessous lève une exception avec le message "tentative illégale de déréférencement de la collection".HQL ordre par dans une collection

Select c 
    from Car 
     LEFT JOIN FETCH c.wheels 
order by c.wheels.location 

Une idée de comment faire cela et si c'est possible en HQL?

Répondre

9
SELECT DISTINCT c 
    FROM Car 
     LEFT JOIN FETCH c.wheels AS wheels 
ORDER BY wheels.location 
+1

Vous pouvez spécifier croissant et l'ordre décroissant en utilisant 'ASC' et' DESC'. par exemple. '... ORDRE PAR DESC'. –

1

Hmm. Vous pensez devoir utiliser un alias?

Select c from Car 
     LEFT JOIN FETCH c.wheels wheel 
order by wheel.location 
1

Je pense que vous devez définir l'alias de voiture dans la de demande:

SELECT DISTINCT c 
    FROM Car c 
     LEFT JOIN FETCH c.wheels AS wheels 
ORDER BY wheels.location 

est Ci-dessous un extrait de la documentation Hibernate sur hql ordering:

select cat from Cat cat 
     join cat.kittens kitten 
group by cat.id, cat.name, cat.other, cat.properties 
having avg(kitten.weight) > 100 
order by count(kitten) asc, sum(kitten.weight) desc 
Questions connexes