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

解决方案 »

  1.   

    我怎么看你这个sql语法不对啊??String sql="SELECT * FROM USER1 U WHERE U.USERNAME=? AND U.PASSWORD=?";
      

  2.   

    hql查询?  为什么不用 createQuery(); 而用的  是createSQLQuery()?
      

  3.   

      版主 好像 CreatesqlQuery支持sql与支持hql?压力好大  
      

  4.   


    query.setParameter(0, username);
    query.setParameter(1, password);换成query.setParameter(1, username);
    query.setParameter(2, password);从1开始看看
      

  5.   

    query.setParameter(0, username);
    query.setParameter(1, password);
    都有值吗USER1 是映射的类名吗  类名应该不是这么写的 。此处不是表名。
      

  6.   

     Query query=session.createSQLQuery(sql); 这个方法是传原生SQL的,不能传HQL.
    createQuery(); 传HQL的 ,有点乱啊
      

  7.   

    这个方法只支持原生sql语句,而你的语法是HQL语法。
      

  8.   

    换成下面的试下: String sql="FROM USER1 U WHERE U.USERNAME=:arg1 AND U.PASSWORD=:arg2";
            Session session=getSession();
            Query query=session.createQuery(sql);//
            query.setString("arg1", username);
            query.setString("arg2", password);
            List<User1> users=query.list();
      

  9.   

    在后台应该可以显示查询的sql语句的,你看看你sql语句的问题吧。
      

  10.   

    楼上正解,调用原生sql方法,而你却传的是hql语句。
      

  11.   

    这种写法有问题,你写的:
    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=?";
      

  12.   

    session.createSQLQuery(sql)   
      

  13.   

    hibernate 中createQuery与createSQLQuery两者区别是:
    前者用的hql语句进行查询,后者可以用sql语句查询
    前者以hibernate生成的Bean为对象装入list返回
    后者则是以对象数组进行存储
      

  14.   

    你还是好好理解什么是HQL查询 和什么是SQL查询吧