Hibernate按排序顺序获取延迟加载的子列表

时间:2013-03-19 11:40:51

标签: hibernate

我有一个以下的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进行排序。

任何人都可以解释,我如何在上面的查询中做到这一点

1 个答案:

答案 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