2010-08-17 41 views
2

我是Hibernate/Java(JSF 2.0)的新手,我試圖調用自定義查詢並將結果讀入創建登錄對象。登錄有兩個setter函數,setLoginDate(Date date)和setUserId(Integer userId)我的函數看起來像這樣,我遇到的問題是如何轉換結果集並將適當的值讀入臨時loginListHibernate - 遍歷createSQLQuery結果並讀入適當的對象

public List<Logins> getUserLogins() { 

    Session session = getSessionFactory().openSession(); 
    List<Logins> loginList = null; 
    Login temp = null; 

    try { 

     String SQL_QUERY = "SELECT login_date, user_id FROM user_logins"; 
     Query query = session.createSQLQuery(SQL_QUERY); 

     List results = query.list(); 
     for(ListIterator iter = results.listIterator(); iter.hasNext();) { 

       ** THIS IS THE PART I AM NOT CLEAR ON *** 
       temp.setLoginDate(resutls.get(0)); 
       temp.setUserId(results.get(1)); 

       loginList.add(temp); 
       temp = null; 

       ***************************************** 

       return loginList; 
     } 

    } catch(HibernateException e) { 
     throw new PersistanceDaoException(e); 
    } finally { 
     session.close(); 
    } 

} 

回答

7

遺漏部分:

 Object[] row = (Object[]) iter.next(); 
     temp = new Login(); 
     temp.setLoginDate(row[0]); 
     temp.setUserId(row[1]); 

您可能需要投row[i]到例如你的目標對象,如果登錄的日期是日期對象:temp.setLoginDate((Date) row[0]);

+0

謝謝你這個工作! – IamBanksy 2010-08-17 16:45:16

1

一個更好的解決方案,儘量使用ResultTransformer 你可以在Hibernate Docs中找到更多關於ResultTransformer的信息。

+2

太棒了!其實我更喜歡第一個答案,這正是我所尋找的(我希望實際值不會轉化爲另一個*&#$&*^$ hibernate對象) – jsh 2011-12-30 17:07:11