我有一个以下的HQL查询
"select distinct p from Participant p left join fetch p.basketItemViewStates as bi where p.basket.id = ?1 order by p.lastName"
其中Participant
具有BasketItemViewStates
的子列表,而BasketItemViewStates进一步拥有一对一关系的子女,名为
@OneToOne(cascade = CascadeType.MERGE)
private BasketItem basketItem;
BasketItem有sortOrder as a column
,我希望在连接中获取的列表应该根据sortOrder进行排序。
任何人都可以解释,我如何在上面的查询中做到这一点
答案 0 :(得分:0)
您只需在hql请求的末尾添加, bi.sortOrder
:
select distinct p from Participant p left join fetch p.basketItemViewStates as bi where p.basket.id = ?1 order by p.lastName, bi.sortOrder
您还可以使用您孩子的sortedCollection并在您的子实体上实现Comparable
接口,并指定休眠,您希望按照自然顺序对此集合进行排序。
[编辑] 编辑完问题后,我认为这样的事情应该有效:
select distinct p from Participant p left join fetch p.basketItemViewStates as bi left join bi.basketItem as bitem where p.basket.id = ?1 order by p.lastName, bitem.sortOrder