【发布时间】:2012-08-23 10:18:57
【问题描述】:
在我的实体中,我目前有这样的映射:
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 查询,但这次对数据进行了排序。 所以我的问题是 - 这是一个错误吗?我正在使用休眠 3.4。
使用 OrderBy 注释对我来说是可以接受的,但也许我不想总是按此属性进行排序,所以我宁愿在条件查询中给出排序指令而不是在注释中。
有什么想法吗?它在更高版本的hibernate中是否以同样的方式工作?
【问题讨论】:
-
请把hibernate生成的完整查询放入
-
这是公司生产代码。但看起来这个 select
from FIRST_ENTITY this_ left outer join SECOND_ENTITY entity_ on this_.id=entity_.id where order by entity_.id asc - 两种情况下的sql查询都是一样的 -
我看过了。但问题是我不想在实体映射中明确设置排序顺序,而是在标准或 hql 查询中设置。
标签: hibernate hibernate-criteria hibernate-annotations