public class UserDao extends BaseDao implements IUserDao { @Override
public User1 validateUser(String username, String password) {
System.out.println(username+" xx "+password);
// TODO Auto-generated method stub
String sql="FROM USER1 U WHERE U.USERNAME=? AND U.PASSWORD=?";
Session session=getSession();
Query query=session.createSQLQuery(sql);//
query.setParameter(0, username);
query.setParameter(1, password);
List<User1> users=query.list();
if(users.size()!=0)
{
User1 user=(User1)users.get(0);
return user;
}
session.close();
return null;
}
}
执行到List<User1> users=query.list();的时候出错,看不出来哪边有问题啊。。SSH;Hibernate;List
query.setParameter(0, username);
query.setParameter(1, password);换成query.setParameter(1, username);
query.setParameter(2, password);从1开始看看
query.setParameter(1, password);
都有值吗USER1 是映射的类名吗 类名应该不是这么写的 。此处不是表名。
createQuery(); 传HQL的 ,有点乱啊
Session session=getSession();
Query query=session.createQuery(sql);//
query.setString("arg1", username);
query.setString("arg2", password);
List<User1> users=query.list();
String sql="FROM USER1 U WHERE U.USERNAME=? AND U.PASSWORD=?";
HQL不是HQL,hql应该把USER1改为你的java中对应的User类型的类名,后面跟的也是类里对应的字段名,大小写保持一致。
你下面用的是createSQLQuery,这是创建的sql查询
你传给它的应该是sql,那你应该写成:String sql="SELECT U.* FROM USER1 U WHERE U.USERNAME=? AND U.PASSWORD=?";
前者用的hql语句进行查询,后者可以用sql语句查询
前者以hibernate生成的Bean为对象装入list返回
后者则是以对象数组进行存储