2017-08-03 9 views
0

hqlクエリを実行しようとしています。文字型の列に集計関数を使用する

String SQL_QUERY = "SELECT SUM(quantity) as sum FROM SalesDetails sd"; 
Query query = session.createQuery(SQL_QUERY); 
for(Iterator it=query.iterate();it.hasNext();) 
{ 
    int row = Integer.parseInt((String) it.next()); 
    System.out.print("MAX QUANTITY: " + row); 
} 

モデルクラスで使用される「量」のデータ・タイプは、ストリングあります。しかし、クエリを実行しようとすると、エラーが発生します。

ERROR: ERROR: function sum(character varying) does not exist 
    Hint: No function matches the given name and argument types. You might need to add explicit type casts. 
    Position: 8 
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet 

助けてください。 HibernateのString値に対してSUM関数を実行する方法を教えてください。前もって感謝します!

+0

HQLクエリでネイティブSQL関数を使用しています。クエリの種類をNativeSqlQueryに変更するか、または休止状態を使用します。 – sAm

+0

合計は数値、浮動小数点数、文字列には適用できません。保持するべきquanityフィールドとは何ですか?dbのどのような種類の列にマップされますか? – deepakl

+1

データフィールド 'quantity'を数値型に変更してください! – JimmyB

答えて

0

あなたがそう

"SELECT SUM(to_number(quantity)) as sum FROM SalesDetails sd"; 

は数に文字を変換しますSUM

を行う前に、その量は常に数へのキャスト、それを数になります確信している場合は、文字のSUMを行うことはできませんそれをSUM関数に渡します。

0

あなたはそれを整数にキャストSUM関数の前に、この

select sum(cast(quantity as integer)) as sum FROM SalesDetails sd"; 

を試すことができます。

関連する問題