2012-09-06 94 views
0

我有這個方法返回一個列表:檢索數據,休眠

public List getPourcentageDivision() { 
    List cs = null; 
    try {      

     org.hibernate.Transaction tx = session.beginTransaction(); 

     Query q = session.createSQLQuery("SELECT u.division,COUNT(c.id) AS nb_commandes FROM utilisateur u LEFT OUTER JOIN commande c ON c.utilisateur_id = u.id GROUP BY u.division"); 
     if(q.list().size() > 0) 
     cs = q.list();    

     session.clear(); 
     session.flush(); 
    } catch (Exception e) { 

     e.printStackTrace(); 

    } 
    return cs; 
} 

就像你看到的,每一行返回兩個屬性,就像是在此查詢:

SELECT u.division,COUNT(c.id) 

你能否記得我如何從這個列表中訪問這些數據,因爲我已經習慣了List<MyClass>,並且很容易檢索數據,但是這次我在繪製圖表的複雜查詢前面

我該如何做到這一點?

回答

1

結果列表中的元素是對象數組長度爲2(select語句中的項數)。數組的第一元素的值由u.division表示,並且隨着信息只要是無法判斷的division型第二之一匹配到COUNT(c.id)

for (Object[] row: (List<Object[]>) result) { 
    Object division = row[0]; 
    Object count = row[1]; 
} 

。返回的值的類型可以通過添加以下內容(當然只適用於非空值)來觀察:

System.out.println(division.getClass()); //u.division 
System.out.println(count.getClass()); //COUNT(c.id) 
+0

謝謝,這就是我所期望的 – begiPass