使用 JPQL/HQL 在 JPA 中对联接提取的集合进行排序

2022-09-03 14:09:44

给定下面的JPQL语句,我如何修改它,以便结果列表中的小猫按其属性排序?age

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

我尝试过多种approches,但没有任何运气。这是我想做的,但它不起作用:

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

答案 1

海杰,

我认为使用查询应用时这是不可能的。但据我所知,您可以使用它向映射中的集合添加默认排序:

@OrderBy("myColumName asc")

答案 2

除了@bigZee77的答案之外,您还可以更改对小猫而不是猫的查询和查询。生成的小猫列表将被排序,每只小猫都会指向同一只猫:

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

但是,如果猫没有任何小猫,你会得到一个空列表。

另一种方法是提供一种Java方法,对小猫列表进行排序。


推荐