Java 在hibernate条件中使用sum()

Java 在hibernate条件中使用sum(),java,sql,hibernate,Java,Sql,Hibernate,如何将sql查询从事务中选择总和(金额*方向)写入hibernate条件?投影是使用聚合函数和hibernate条件的关键字 要实现查询,请选择SUM(…)查询。看起来很接近你的问题 这包括一个SUM(col1*col2)表达式的工作示例,原始海报也有类似的问题,但以前有例外。我想你需要的是公式。像这样的, @Entity @Table('TRANSACTIONS') Class transactions { @Column("AMOUNT") private doubl

如何将sql查询
从事务中选择总和(金额*方向)
写入hibernate条件?

投影是使用聚合函数和hibernate条件的关键字

要实现
查询,请选择SUM(…)
查询。看起来很接近你的问题



这包括一个
SUM(col1*col2)
表达式的工作示例,原始海报也有类似的问题,但以前有例外。

我想你需要的是公式。像这样的,

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

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

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

}

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

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

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

@Closevoter-这是一个真正的问题。我尝试了“.setProjection(Projections.sum((“amount*direction”))”,但它给了我一个异常“org.hibernate.QueryException:无法解析属性:amount*direction…”你能给出你的答案吗-您的初始查询是什么:createQuery(“…”)-结果放在哪里?(进入amntDir?)-如何使用结果?