Hibernate - Обработка результатов createSQLQuery и чтение в соответствующий объект - PullRequest
2 голосов
/ 17 августа 2010

Я довольно новичок в Hibernate / Java (JSF 2.0) и пытаюсь вызвать пользовательский запрос и прочитать результаты в объект, который я создал.У входа в систему есть две функции установки: setLoginDate (Date date) и setUserId (Integer userId), моя функция выглядит так: у меня проблема в том, как преобразовать набор результатов и прочитать соответствующие значения во временный логинList

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 ]

7 голосов
/ 17 августа 2010

недостающая часть:

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

вам может потребоваться привести row[i] к вашему целевому объекту, например, если дата входа является объектом даты: temp.setLoginDate((Date) row[0]);

1 голос
/ 17 августа 2010

для лучшего решения, попробуйте использовать ResultTransformer, вы можете узнать больше о ResultTransformer в Hibernate Docs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...