首页 文章

使用Criteria的算术运算

提问于
浏览
2

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

SELECT salary + 500 FROM EMPLOYEE;

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

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

请让我知道这件事 .

问候,

2 回答

  • 1

    你有几种可能性:

    • 创建自己的Projection类,生成"salary + 500" select子句 . 您可以将属性投影用作模板

    • 使用HQL而不是Criteria

    • 不是在查询中执行此操作,而是在Java中执行此操作:您选择工资,通过返回的列表进行评估,并为列表中的每个工资添加500 .

  • 3

    请参阅下面的示例,该示例使用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 } 
                      ) 
                ) 
            );
    

    希望能帮助到你 .

相关问题