2

我想在休眠中使用 Criteria API 执行算术运算。SQL 是:

SELECT salary + 500 FROM EMPLOYEE;

如何使用标准来实现这一点?

我只能使用 SALARY 列检索,Projection但之后不确定如何对其执行算术运算: session.createCriteria(Employee.class).setProjection(Projections.projectionList().add(Projections.property("salary" ))

请让我知道这件事。

问候,

4

2 回答 2

3

你有几个可能性:

  • 创建您自己的 Projection 类,该类会生成“salary + 500”选择子句。您可以使用属性投影作为模板
  • 使用 HQL 而不是标准
  • 不是在查询中这样做,而是在 Java 中这样做:选择薪水,遍历返回的列表,然后将 500 添加到列表中的每个薪水。
于 2012-11-12T16:14:53.027 回答
1

请参阅下面的示例,该示例使用 SQL Projections 在价格和数量之间查找产品。

session.createCriteria(Order.class) 
        .createAlias("order", "od") 
        .setProjection( Projections.projectionList() 
            .add( Projections.groupProperty("od.orderId") ) 
            .add( Projections.groupProperty("od.rate") ) 
            .add( Projections.groupProperty("od.quantity") ) 
            .add( Projections.sqlProjection( 
                    "price * quantity as total", 
                    new String[] { "totalAmount" }, 
                    new Type[] { Hibernate.DOUBLE } 
                  ) 
            ) 
        ); 

希望能帮助到你。

于 2012-11-12T17:10:05.960 回答