【发布时间】:2011-01-07 11:02:07
【问题描述】:
如何将 sql 查询 select sum(amount * direction) from transactions 写入休眠条件?
【问题讨论】:
-
@Closevoter - 这是一个真正的问题。
如何将 sql 查询 select sum(amount * direction) from transactions 写入休眠条件?
【问题讨论】:
我想我找到了答案。您必须使用 Projection.sqlProjection() 而不是 Projections.sum()。示例:
.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE}));
【讨论】:
我认为你需要的是公式。像这样的,
@Entity
@Table('TRANSACTIONS')
Class transactions {
@Column("AMOUNT")
private double amount;
@Column("DIRECTION")
private double direction;
@Formula("AMOUNT * DIRECTION")
private double multiplication;
}
并将乘法列添加到您的投影列表中。
【讨论】:
Projections 是使用具有休眠条件的聚合函数的关键词。
roseindia has a short example 用于实现SELECT SUM(...) 查询。看起来很接近你的问题。
Here's another forum topic 包含 SUM(col1 * col2) 表达式的工作示例,而原始发布者之前也有类似的异常问题。
【讨论】: