如何将sql查询select sum(amount * direction) from transactions
写入hibernate条件?
答案 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)
表达式的工作示例,原始海报上有类似的异常问题。