是否可以从Hibernate Criteria中删除订单?

时间:2010-09-21 09:58:09

标签: java hibernate annotations sql-order-by criteria

如果我在对象上有@OrderBy(“someProperty”)注释,然后使用Criteria添加ORDER BY子句,如下所示:

criteria.addOrder(Order.asc("id"));

生成的SQL将执行如下排序:

ORDER BY someProperty, id asc

是否可以更改两者的顺序或删除someProperty订单?我无法删除@OrderBy注释,而且我正在使用Hibernate for Java。

2 个答案:

答案 0 :(得分:2)

Criteria没有删除Order Criterion的方法 Order类非常有限,您只能使用属性名称,它会生成标准和可移植的SQL。 OrderBy注释是一个SQL顺序,如javadoc所述:OrderBy 这意味着您可以在那里使用任何sql(甚至是您的数据库供应商的独家)。看一下这些文章:Sorting Collections in Hibernate Using SQL in @OrderBy

在您的域类中添加SQL片段不一定是世界上最优雅的东西,但它可能是最实用的东西。

答案 1 :(得分:1)

有可能通过criteria.iterateOrderings()迭代器删除特定的排序,但我不确定它如何与注释一起使用。