Using sum() in hibernate criteria

前端 未结 3 991
猫巷女王i
猫巷女王i 2020-12-03 13:42

How can I write the sql query select sum(amount * direction) from transactions into hibernate criteria ?

相关标签:
3条回答
  • 2020-12-03 14:22

    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}));
    
    0 讨论(0)
  • 2020-12-03 14:29

    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.

    0 讨论(0)
  • 2020-12-03 14:40

    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.

    0 讨论(0)
提交回复
热议问题