2014-01-20 46 views
0
qty|price 
1 | 4 
4 | 5 
6 | 4 
2 | 3 
1 | 2 

是數據庫上的條目。我想獲得的結果:(集團通過價格數量)java hibernate彙總錯誤

qty|price 
7 | 4 
4 | 5 
2 | 3 
1 | 2 

我成功當我這樣做使用sqlwave此查詢到我的本地DATABSE

SELECT price, sum(quantity) FROM table

但是當我嘗試這在Java /休眠..並嘗試列出,我沒有得到sum()聚合的結果。我試圖聚合..但它給了我所有的數量,而不是價格的總和。我如何限制,所以我得到的具體價格數量的總和??

這裏是我的方法:

protected void listInventory(String productID) 
{ 
Session session = sessionFactory.openSession(); 
Transaction tx = null; 
try{ 
tx = session.beginTransaction(); 

Query query = session.createQuery("SELECT price, sum(quantity) FROM table WHERE product_code=:productID GROUP BY price"); 

query.setParameter("product_code",productID); 

List iv = query.list(); 
for(Iterator iterator = iv.iterator();iterator.hasNext();){ 
Products pb = (Products)iterator.next(); 
System.out.println("Price: "+pb.getPrice()); 
System.out.println("Quantity: " + pb.getQuantity()); 
} 
tx.commit(); 
}catch (HibernateException e) { 
     if (tx!=null) tx.rollback(); 
     e.printStackTrace(); 
    }finally { 
      session.close();serverWriter.flush(); 
     } 
} 
+0

請發表您的具體HQL/JPQL查詢,你怎麼讀它,使用Hibernate的生成SQL一起。 – chrylis

+0

@chrylis更新。我知道pb.getQuantity()只會得到該特定條目的數量..所以我想知道如何可以將該價格的總計數量放置在那裏。 – user2556304

回答

0

如果你想量的總和一個特定的價格,那麼你語法正確的SQL。你的表情:因爲沒有group by條款

SELECT price, sum(quantity) as quantity 
FROM table; 

是不正確的。試試這個:

SELECT price, sum(quantity) as quantity 
FROM table 
GROUP BY price; 

如果你只想要一個價格的結果:

SELECT sum(quantity) as quantity 
FROM table 
WHERE price = xxx; 
+0

價格爲分組,但數量不顯示 – user2556304

+0

@ user2556304。 。 。我不知道'pb.getQuantity()'是什麼。也許將'sum()'別名爲'quantity'會解決這個問題。 –

+0

你是什麼意思通過別名和數量?你的意思是「AS」,你可以舉一個例子來說明如何做到這一點? – user2556304