在我的实体中,我目前有这样的映射:
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中它是否以相同的方式工作?
答案 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()是您查询的结果。
此致