Подтвердить что ты не робот

Использование sum() в спящих критериях

Как я могу написать запрос sql select sum(amount * direction) from transactions в критерии спящего режима?

4b9b3361

Ответ 1

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

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

Ответ 2

Я думаю, что вам нужна формула. Что-то вроде этого,

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

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

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

}

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

Ответ 3

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

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


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