//创建对话 Query query=session.createQuery("select u from usertable as u where username='" + userName + "'"); try{ Iterator it = query.iterate(); ul = (Usertable) it.next(); 从你的代码有两点是存在问题的: 1.("select u from usertable as u where username='" +userName + "'");这种hql的构造方法是项目实际开发应该避免的,应该使用匹配符的方式来构造(用?),这样做会导致中文内容的传入而出现乱码。 应该这样: ("select u from usertable as u where username=?",参数); 2.Iterator it = query.iterate();ul = (Usertable) it.next(); 你这样写肯定是有问题的,如果没有数据内容检索出来,那当然要报异常啊! 应该是:Iterator it = query.iterate(); if(it.hasNext()) ul = (Usertable) it.next(); 综上所述:你的问题我估计是中文名的传入导致无法取得数据库数据,所以后面的Iterator读取就失败了,自己好好检查一下,祝你好运!
Query query=session.createQuery("select u from usertable as u where username='" +
userName + "'");
try{
Iterator it = query.iterate();
ul = (Usertable) it.next();
从你的代码有两点是存在问题的:
1.("select u from usertable as u where username='" +userName + "'");这种hql的构造方法是项目实际开发应该避免的,应该使用匹配符的方式来构造(用?),这样做会导致中文内容的传入而出现乱码。
应该这样:
("select u from usertable as u where username=?",参数);
2.Iterator it = query.iterate();ul = (Usertable) it.next();
你这样写肯定是有问题的,如果没有数据内容检索出来,那当然要报异常啊!
应该是:Iterator it = query.iterate();
if(it.hasNext())
ul = (Usertable) it.next();
综上所述:你的问题我估计是中文名的传入导致无法取得数据库数据,所以后面的Iterator读取就失败了,自己好好检查一下,祝你好运!
select u from usertable as u where username='" +userName + "'
应该没有"as"才对
select u from usertable u where username='" +userName + "'