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.
精彩评论