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

Jör*_*erg 9 java annotations hibernate criteria sql-order-by

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

criteria.addOrder(Order.asc("id"));
Run Code Online (Sandbox Code Playgroud)

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

ORDER BY someProperty, id asc
Run Code Online (Sandbox Code Playgroud)

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

Awi*_*Awi 2

Criteria没有删除Order的方法, Criterion Order类也非常有限,您只能使用属性名称,并且它会生成标准且可移植的 SQL。OrderBy 注释是一种 SQL 订单,如 javadoc 所述:OrderBy 这意味着您可以在那里使用任何 sql(甚至是您的数据库供应商专有的 SQL)。看看这些文章:在 Hibernate 中使用 SQL in @OrderBy 对集合进行排序

将 SQL 片段添加到域类中不一定是世界上最优雅的事情,但它可能是最实用的事情。