【发布时间】:2014-02-03 18:37:18
【问题描述】:
我在从列表中的对象获取 id 值时遇到问题。我首先将用户登录详细信息存储在会话中,并使用这些信息来设置用于填充列表的查询的条件。该列表将仅包含一个用户类型的对象。 当我通过调试检查时,该列表正在填充正确的详细信息,但是当我尝试迭代列表以获取存储在列表中的对象的 id 值时,我的代码甚至没有进入 for 循环。 id 值是查询正在获取的用户的 id。 以下是我的代码sn-p:
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();
}
谁能帮忙?
【问题讨论】:
-
请不要使用串联的字符串查询来实现您的登录。这是一个很大的安全漏洞。请参阅 SQL 注入。您应该使用命名查询参数。
-
你是对的,但是对于我手头的任务,为了简单起见,我被要求以这种方式执行它。一旦用户登录他的用户名和密码并在上面的代码中存储,然后我会调用这些详细信息,以便将用户发布和当前登录用户的用户 ID 添加到数据库中,以便稍后显示当前的 RSS 提要登录的用户。有没有办法从上面的代码中获取id值?
-
除了 Hibernate 部分,它看起来对我来说是正确的。如果从未进入循环,则列表必须为空。例如,您可以通过打印列表大小来了解。
标签: hibernate jsp session arraylist foreach