如果我在对象上有@OrderBy(“someProperty”)注释,然后使用Criteria添加ORDER BY子句,如下所示:
criteria.addOrder(Order.asc("id"));
生成的SQL将执行如下排序:
ORDER BY someProperty, id asc
是否可以更改两者的顺序或删除someProperty订单?我无法删除@OrderBy注释,而且我正在使用Hibernate for Java。
答案 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()迭代器删除特定的排序,但我不确定它如何与注释一起使用。