Criteria查询中的数学运算符

时间:2009-04-14 11:19:39

标签: java hibernate criteria

给定映射的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等,但不是基本的数学运算符?

2 个答案:

答案 0 :(得分:5)

您可以在类中创建一个属于此计算值的新属性。只需指定该属性的公式属性即可。然后,您可以在Criteria中包含此属性。

<property name="product" formula="aValue*bValue" />

formula(可选):一个SQL表达式,用于定义计算属性的值。计算属性没有自己的列映射。

答案 1 :(得分:1)

你总是可以把它添加为sql我觉得有一些sqlProjection / sqlRestriction方法