【发布时间】:2013-11-13 13:22:55
【问题描述】:
如何使用 order by 子句按字段总和排序
实体:
class MyClass {
private int a;
private int b;
//...
}
HQL 工作正常:
"SELECT myclass FROM MyClass myclass ORDER BY myclass.a + myclass.b DESC "
如何使用 Criteria API 做同样的事情?
【问题讨论】:
-
AFAIK,没有破解你自己的 Order 子类的方法是不可能的,它会覆盖 toSqlString()。为什么不将其保留为 HQL 查询?
-
是真的吗?我的 HQL 有效。 “Hibernate 不支持 order by 子句中的算术表达式。” stackoverflow.com/a/2373359/1319419
-
嗯,自 2010 年以来情况可能发生了变化,因为您的 HQL 查询工作正常。
-
在这种情况下使用@Formula 怎么样?
-
Criteria API 比 HQL 限制更多,并导致代码更长、更难阅读。当必须创建动态查询时(例如具有多个可选条件的搜索表单),它很有用。除此之外,HQL 更容易、更易于维护和更强大。使用它。
标签: hibernate orm hql criteria criteria-api