日期:2014-05-17  浏览次数:20682 次

hibernate中Query query=session.createQuery的问题
本是用hibernate和strut来实现登录的
登录部分代码如下:
public boolean login(Users user) throws SQLException {
boolean flag = false;
String usernum = user.getUsernum();
String password = user.getPassword();

Session session=util.getSession();
System.out.println("aaa");
Query query=session.createQuery("from Users u where u.usernum=? and u.password");
System.out.println("bbbb");
query.setString(0, usernum);
query.setString(0, password);
List list=query.list();
if(list!=null || list.size()>0)
{
flag=true;
}
return flag;
}



提示错误500:The server encountered an internal error () that prevented it from fulfilling this request.


红色部分执行不过去,控制台只能输出aaa部分,后面的不能输出了,就是session.createQuery的问题吧?

高手帮帮忙。困扰了一天了都,郁闷啊、、、、

------最佳解决方案--------------------
试试看下面的语句吧:
Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
query.setParameter(0, usernum);
query.setParameter(1, password);
我这里没测试环境……我不晓得能不能通过。

query.setString(0, usernum);应该是这个方法使用不正确。

------其他解决方案--------------------
createSQLQuery
------其他解决方案--------------------
Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
以上部分要是改为:Query query=session.createQuery("from Users u ");是可以的,难道where部分有错误吗???
------其他解决方案--------------------
Query query=session.createQuery("from Users u where u.usernum=? and u.password=?");
System.out.println("bbbb");
query.setString(1, usernum);
query.setString(2, password);



这样有问题?

那就要看属性usernum和password是否为string类型了。
------其他解决方案--------------------
query.setString(0, usernum);
query.setString(0, password);你都是0,必须有问题
------其他解决方案--------------------
Query query=session.createQuery("from Users u where u.usernum=:usernum and u.password=:password");
System.out.println("bbbb");
query.setString("usernum", usernum);
query.setString("password", password);



建议使用这方式。。。。

------其他解决方案--------------------
不好意思。那个:其实是:
query.setString(1, usernum);
query.setString(2, password);
不过不行的。还有
Query query=session.createQuery("from Users u where u.usernum=:usernum and u.password=:password");
System.out.println("bbbb");
query.setString("usernum", usernum);
query.setString("password", password);
我也试过,可是也不行啊。。。提示同样的错误。
------其他解决方案--------------------
建议用其他方式,可能是其他配置文件的原因

------其他解决方案--------------------

还是不行啊、、、怎么回事呢。。。。
------其他解决方案--------------------
引用:
不好意思。那个:其实是:
query.setString(1, usernum);
query.setString(2, password);
不过不行的。还有