在休眠标准中使用sum()

时间:2011-01-07 11:02:08

标签: java sql hibernate

如何将sql查询select sum(amount * direction) from transactions写入hibernate条件?

3 个答案:

答案 0 :(得分:14)

想想我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例如:

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

答案 1 :(得分:6)

我认为你需要的是公式。像这样的东西,

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

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

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

}

并将乘法列添加到投影列表中。

答案 2 :(得分:1)

预测是使用具有hibnerate标准的聚合函数的关键词。

roseindia has a short example用于实施SELECT SUM(...)查询。看起来非常接近你的问题。


Here's another forum topic包含SUM(col1 * col2)表达式的工作示例,原始海报上有类似的异常问题。