给定映射的hibernate类:
@Entity
public class MyTestClass {
/* id and stuff */
private Integer aValue;
private Integer bValue;
}
您可以使用HQL执行以下操作:
Query query
= getCurrentSession().createQuery("select aValue * bValue from MyTestClass");
List<Double> resultList = query.list;
并获得计算结果。
是否可以使用Criteria API执行与此类似的操作?我还没有找到一种方法来使用Criteria API进行数学运算。我们有汇总函数,如sum,avg等,但不是基本的数学运算符?
答案 0 :(得分:5)
您可以在类中创建一个属于此计算值的新属性。只需指定该属性的公式属性即可。然后,您可以在Criteria中包含此属性。
<property name="product" formula="aValue*bValue" />
formula(可选):一个SQL表达式,用于定义计算属性的值。计算属性没有自己的列映射。
答案 1 :(得分:1)
你总是可以把它添加为sql我觉得有一些sqlProjection / sqlRestriction方法