4

给定映射的休眠类:

@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 等聚合函数,但没有基本的数学运算符?

4

2 回答 2

6

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

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

公式(可选):定义计算属性值的 SQL 表达式。计算属性没有自己的列映射。

于 2009-04-14T20:04:10.470 回答
1

你总是可以将它添加为 sql 我认为有一些 sqlProjection/sqlRestriction 方法

于 2009-04-14T11:30:22.840 回答