Hibernate - 遍历createSQLQuery结果并读入适当的对象

时间:2010-08-17 16:16:51

标签: java hibernate

我是Hibernate / Java(JSF 2.0)的新手,我试图调用自定义查询并将结果读入我创建了Logins的对象。 Logins有两个setter函数,setLoginDate(Date date)和setUserId(Integer userId)我的函数看起来是这样的,我遇到的问题是如何转换结果集并将相应的值读入temp loginList

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();
     }

}

2 个答案:

答案 0 :(得分:7)

缺少部分:

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

如果登录日期是日期对象,您可能需要将row[i]强制转换为目标对象:temp.setLoginDate((Date) row[0]);

答案 1 :(得分:1)

要获得更好的解决方案,请尝试使用ResultTransformer 你可以在Hibernate Docs中找到更多关于ResultTransformer的信息。