我遇到从列表中的对象获取id值的问题。我首先在会话中存储用户登录详细信息,并使用这些来设置用于填充列表的查询的条件。该列表仅包含一个user类型的对象。 当我通过调试检查时,列表正在填充正确的详细信息,但是当我尝试迭代列表以获取存储在列表中的对象的id值时,我的代码甚至不进入for循环。 id值是查询获取的用户的id。 以下是我的代码片段:
HttpSession session1 = request.getSession();
LoggedUser lu = (LoggedUser) session1.getAttribute("logged");
String uname = lu.getUserName();
String pword = lu.getPass();
List<Users> ulist = session.createSQLQuery("Select * From Users WHERE Username = '" + uname + "'" + " AND Password = " + "'" + pword+ "'").list();
int uid = 0; // up until here everything works fine with debugging
for(Users user : ulist)
{
uid = user.getId();
}
有人可以帮忙吗?
答案 0 :(得分:0)
开始使用像这样的休眠标准,
List<Users> ulist = (List<Users>) session.createCriteria(Users.class)
.add(Restrictions.eq("username", uname))
.add(Restrictions.eq("password", pword)).list();
您的Users类中id的数据类型是什么?如果是int,
if(null != ulist && ulist.size() > 0){
int uid = 0;
for(Users user : ulist)
{
uid = user.getId();
}
}
<强>更新强>
你需要检查null。否则,您可能会遇到很多nullpointer异常。
LoggedUser lu = (LoggedUser) session1.getAttribute("logged");
String uname = "";
String pword = "";
if(null != session1.getAttribute("logged")){
uname = lu.getUserName();
pword = lu.getPass();
}
希望这有帮助。