2010-08-17 42 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