2011-01-07 2 views

ответ

14

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

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

Can вы разрабатываете свой ответ? -Какой ваш первоначальный запрос: createQuery ("....") -Где результат ставится? (в amntDir?) -Как вы используете результат? –

1

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

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


Here's another forum topic, который включает в себя рабочий пример для SUM(col1 * col2) выражения и оригинальный плакат был похож проблемы с исключениями раньше.

+0

Я пробовал использовать «.setProjection (Projections.sum ((« количество * направление »)))« но это дает мне исключение »org.hibernate.QueryException: не удалось разрешить свойство: количество * направление ....» – panagdu

6

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

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

    @Column("AMOUNT") 
    private double amount; 

    @Column("DIRECTION") 
    private double direction; 

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

} 

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

Смежные вопросы