Использование sum () в критериях гибернации - PullRequest
18 голосов
/ 07 января 2011

Как написать SQL-запрос select sum(amount * direction) from transactions в критерии гибернации?

Ответы [ 3 ]

14 голосов
/ 09 января 2011

Думаю, я нашел ответ. Вы должны использовать Projection.sqlProjection (), а не Projection.sum (). Пример:

.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE}));
6 голосов
/ 08 января 2011

Я думаю, что вам нужна формула.Примерно так:

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

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

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

}

И добавьте столбец умножения в свой список проекций.

1 голос
/ 07 января 2011

Проекции - ключевое слово для использования агрегатных функций с критериями гибернации.

roseindia имеет короткий пример для реализации запроса SELECT SUM(...). Выглядит довольно близко к вашей проблеме.


Вот еще одна тема на форуме , которая включает рабочий пример выражения SUM(col1 * col2), и у исходного плаката были похожие проблемы с исключениями ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...