Java 使用标准的算术运算

Java 使用标准的算术运算,java,hibernate,Java,Hibernate,我想在hibernate中使用CriteriaAPI执行算术运算。SQL是: SELECT salary + 500 FROM EMPLOYEE; 如何使用标准来实现这一点 我只能使用Projection检索SALARY列,但在此之后,我不确定如何对该列执行算术运算: session.createCriteriaEmployee.class.setProjectionProjections.projectionList.addProjections.propertysalary 请让我知道这件

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

SELECT salary + 500 FROM EMPLOYEE;
如何使用标准来实现这一点

我只能使用Projection检索SALARY列,但在此之后,我不确定如何对该列执行算术运算: session.createCriteriaEmployee.class.setProjectionProjections.projectionList.addProjections.propertysalary

请让我知道这件事


关于,

您有几种可能性:

创建您自己的Projection类,该类将生成salary+500 select子句。可以将特性投影用作模板 使用HQL而不是标准 不在查询中执行此操作,而是在Java中执行此操作:选择薪资,通过返回的列表进行统计,并向列表中的每个薪资添加500。
您有几种可能性:

创建您自己的Projection类,该类将生成salary+500 select子句。可以将特性投影用作模板 使用HQL而不是标准 不在查询中执行此操作,而是在Java中执行此操作:选择薪资,通过返回的列表进行统计,并向列表中的每个薪资添加500。
请参见下面的示例,该示例使用SQL预测在价格和数量之间查找产品

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 } 
                  ) 
            ) 
        ); 

希望有帮助。

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

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 } 
                  ) 
            ) 
        ); 

希望能有所帮助。

感谢您的及时回复。您能提供一些示例代码,比如如何创建我们自己的投影类吗?@user182944不要过度使用。最好的方法是使用HQL获取值,然后添加500 IMHO。使用HQL,我们可以直接在查询中使用+运算符,而不是在获取值后添加500。但我仍然想创建我自己的投影类,因为我被要求只对我可能感到沮丧但又无能为力的人使用标准:。这样做的第一步可能是实现投影接口,但不知道如何处理该投影接口的未实现方法来实现我的目的。有人可以指导吗?正如我所说的,以房地产预测为出发点:感谢immidate的回复。您能提供一些示例代码,比如如何创建我们自己的投影类吗?@user182944不要过度使用。最好的方法是使用HQL获取值,然后添加500 IMHO。使用HQL,我们可以直接在查询中使用+运算符,而不是在获取值后添加500。但我仍然想创建我自己的投影类,因为我被要求只对我可能感到沮丧但又无能为力的人使用标准:。这样做的第一步可能是实现投影接口,但不知道如何处理该投影接口的未实现方法来实现我的目的。有人可以指导吗?正如我所说,使用属性投影作为起点:在上面的代码中,我认为total和totalAmount将是相同的名称,即total或totalAmount。当我尝试使用不同的名称时,我得到了一个例外。在上面的代码中,我认为total和totalAmount应该是相同的名称,即total或totalAmount。当我尝试使用不同的名字时,我得到了一个例外。