Как я могу написать запрос sql select sum(amount * direction) from transactions
в критерии спящего режима?
Использование sum() в спящих критериях
Ответ 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)
и исходного плаката, имела аналогичные проблемы с исключениями раньше.