Заказ коллекции выборок в JPA с использованием JPQL / HQL - PullRequest
10 голосов
/ 06 мая 2011

Учитывая приведенный ниже оператор JPQL, как мне изменить его так, чтобы котята в результирующем списке упорядочивались по их свойству age?

SELECT c FROM Cat c left join fetch c.kittens WHERE c.id = :id

Я пробовал несколько подходов, но безуспешно,По сути, это то, что я хотел бы сделать, но это не работает:

SELECT c FROM Cat c left join fetch c.kittens k WHERE c.id = :id ORDER BY k.age

Ответы [ 2 ]

10 голосов
/ 06 мая 2011

Hej,

Я не думаю, что это возможно при применении с использованием запросов.Но, насколько я помню, вы можете использовать это, чтобы добавить упорядочение по умолчанию к вашей коллекции в отображении:

@OrderBy("myColumName asc")
4 голосов
/ 06 мая 2011

В дополнение к ответу @ bigZee77 вы также можете изменить свой запрос и запросить котенка вместо кота.Получившийся список котят будет упорядочен, и каждый котенок будет указывать на одного и того же кота:

select k from Cat c inner join fetch c.kittens k where c.id = :id order by k.age

Если у кота нет котенка, вы получите пустой список.

Альтернатива, конечно, заключается в предоставлении метода Java, который сортирует список котят.

...