1

在我的实体中,我目前有这样的映射:

private Set<Sth> sths;

所以当我使用criteria.addOrder(Order.asc(Sth.ID))

然后休眠生成查询,order by id asc但集合中的元素未排序(我遍历它们以检查) - 我认为在这种情况下休眠将使用某种排序集实现(我不希望数据总是被排序)。

但是如果我使用..

@OrderBy(Sth.ID)
private Set<Sth> sths;

Hibernate 将生成完全相同的 sql 查询,但这次对数据进行了排序。所以我的问题是 - 这是一个错误吗?我正在使用休眠 3.4。

使用 OrderBy 注释对我来说是可以接受的,但也许我不想总是按此属性进行排序,所以我宁愿在标准查询中给出排序指令,而不是在注释中。

有任何想法吗?它在更高版本的hibernate中是否以相同的方式工作?

4

1 回答 1

0

阅读http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.html#collections-sorted

甚至可以使用集合 filter() 在运行时按任意标准对关联进行排序:

sortedUsers = s.createFilter( group.getUsers(), "order by this.name" ).list();

其中 group.getUsers() 是您的查询结果。

问候

于 2012-08-23T10:50:43.760 回答