Hibernate设置和排序问题

时间:2012-08-23 10:18:57

标签: hibernate hibernate-criteria hibernate-annotations

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

private Set<Sth> sths;

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

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

但如果我使用..

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

甚至可以在运行时使用集合过滤器()按照任意条件对关联进行排序:

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

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

此致