2017-08-03 90 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 

請幫忙。我將如何在休眠中的字符串值上執行SUM函數。提前致謝!

+0

您在HQL查詢中使用本機sql函數。將查詢類型更改爲NativeSqlQuery或使用休眠條件。 – sAm

+0

sum可以應用於數字,浮點數,而不是字符串..什麼是量化字段應該保存並映射到db中的哪種列? – deepakl

+1

將您的數據字段'quantity'更改爲數字類型! – JimmyB

回答

0

你不能做的角色來SUM,如果你確信數量將始終是一個數字它投給了許多做算術

之前,所以

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

將字符轉換成數然後將其傳遞給SUM函數。

0

你可以試試這個

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

之前SUM函數只投它爲整數。