使用Criteria的算术运算

时间:2012-11-12 16:04:43

标签: java hibernate

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

SELECT salary + 500 FROM EMPLOYEE;

如何使用Criteria实现这一目标?

我能够使用Projection仅检索SALARY列,但之后不确定如何对其执行算术运算:     session.createCriteria(Employee.class).setProjection(Projections.projectionList()。添加(Projections.property( “工资”))

请让我知道这件事。

此致

2 个答案:

答案 0 :(得分:3)

你有几种可能性:

  • 创建自己的Projection类,生成“salary + 500”select子句。您可以将属性投影用作模板
  • 使用HQL而不是Criteria
  • 在查询中没有这样做,而是在Java中执行此操作:您选择薪水,通过返回的列表进行评估,并为列表中的每个薪水添加500。

答案 1 :(得分: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 } 
                  ) 
            ) 
        ); 

希望它有所帮助。