开发者

Using sum() in hibernate criteria

How can I write the sql query select sum(amount * direction) from transactions into hiberna开发者_高级运维te criteria ?


Think I found the answer. You must use the Projection.sqlProjection() and not Projections.sum(). Example:

.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE}));


I think what you need is formula. Something like this,

@Entity
@Table('TRANSACTIONS')
Class transactions {

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

     @Formula("AMOUNT * DIRECTION")
     private double multiplication;

}

And add multiplication column to your projection list.


Projections is the key word to use aggregate functions with hibnerate criteria.

roseindia has a short example for implementing a SELECT SUM(...) query. Looks pretty close to your problem.


Here's another forum topic that includes a working example for a SUM(col1 * col2) expression and the original poster had similiar problems with exceptions before.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜