我是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();
}
}
答案 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的信息。