2009-03-20 8 views
9

Mam 2 podmioty: samochód i koła (oneToMany) i chcę odzyskać mój samochód, ze wszystkimi kołami i (jest to część trudna) zamówione przez wheels.location. Poniższy kod zgłasza wyjątek z komunikatem "nielegalna próba pobrania zbioru".Zamówienie HQL w ramach kolekcji

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

Każdy pomysł, jak to zrobić i czy jest to możliwe w HQL?

Odpowiedz

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

Można określić rosnąco i kolejność malejąca, używając 'ASC' i' DESC'. na przykład '... ORDER BY DESC'. –

1

Hmm. Myślisz, że możesz potrzebować użyć aliasu?

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

myślę, że trzeba ustawić alias samochód w od życzenie:

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

Poniżej znajduje się wyciąg z dokumentacji hibernacji na 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