Я пытался с ".setProjection (Projection.sum ((" amount * direction ")))", но это дает мне исключение "org.hibernate.QueryException: не удалось разрешить свойство: amount * direction ...."

могу написать запрос SQLselect sum(amount * direction) from transactions в критерии гибернации?

 Andreas_D07 янв. 2011 г., 12:26
@Closevoter - этоявляется реальный вопрос.

Ответы на вопрос(3)

Решение Вопроса

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

.setProjection(Projections.sqlProjection("sum(cast(amount as signed)* direction) as amntDir", new String[] {"amntDir"} , new Type[] {Hibernate.DOUBLE}));
 Quentin T.03 июл. 2012 г., 09:14
Можете ли вы разработать свой ответ? -Какой у вас начальный запрос: createQuery ("....") -Где результат ставится? (в amntDir?) -Как вы используете результат?

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

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

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

 panagdu07 янв. 2011 г., 12:38
Я пытался с ".setProjection (Projection.sum ((" amount * direction ")))", но это дает мне исключение "org.hibernate.QueryException: не удалось разрешить свойство: amount * direction ...."

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

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

     @Column("AMOUNT")
     private double amount;

     @Column("DIRECTION")
     private double direction;

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

}

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

Ваш ответ на вопрос