当在DAO层中使用hibernate实现登录查询传递参数时,就报这种错误,求高手解决,感激!!!
 

解决方案 »

  1.   

    你给的都是一些没用的报错,
    只要你的代码有问题就很有可能出现这种报错,
    你看看报错的下面有没有空指针异常什么的。
    或者发上来我帮你看看。
    另外建议楼主下次贴代码,不要贴图片,要不照着图片打代码挺麻烦的。
    最后说一下struts2和hibernate肯定是没有问题的。要不经典的SSH怎么用啊。
    如果你想要struts2和hibernate结合使用的例子,我可以发给你份。
      

  2.   

    Dao层验证登录的一个方法,当用HQL查询有问题,换成Criteria查询就可以,user 是struts2下一个登陆action传入的值
    public int loginDao(Users user) {
    //返回的值
    int refult =0;
    Session se =null;
    Transaction tr =null;
    try {
    se=HibernateSessionFactory.getSession();
    tr=se.beginTransaction();
    Query qu =se.createQuery("from Users where name=:name and password =:password ");
    qu.setProperties(user);
    /*Criteria qu =se.createCriteria(user.getClass());
    qu.add(Restrictions.eq("name",user.getName()));
    qu.add(Restrictions.eq("password",user.getPassword()));*/
    refult =qu.list().size();
    tr.commit();
    } catch (Exception e) {
    tr.rollback();
    System.out.println(e.getMessage());
    }finally{
    se.close();
    }
    return refult;
    }登录actionpackage www.bdqn.com.Login;import www.bdqn.com.BizImql.LoginBizImql;
    import www.bdqn.com.DaoImql.LoginDaoImql;
    import www.bdqn.com.eatiy.Users;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {

    private Users user;

    private String ajax; public String getAjax() {
    return ajax;
    } public void setAjax(String ajax) {
    this.ajax = ajax;
    } public Users getUser() {
    return user;
    } public void setUser(Users user) {
    this.user = user;
    }

    public String execute() throws Exception{
    System.out.println("执行方法"+this.getUser().getName());
    System.out.println(getAjax());
    LoginBizImql lz =new LoginBizImql();
    lz.setLg(new LoginDaoImql());
    if(lz.loginBiz(user)==1){
    if("house_".equals(getAjax())){
    return "ajax";
    }
    return SUCCESS;
    }else{
    if("house_".equals(getAjax())){
    addFieldError("user.name", "用户名或密码错误");
    return "inputs";
    }
    return INPUT;
    }
    }
    }
     
    就是这样 ,不传参数 ,直接HQL语句“from Users”就不报错
      

  3.   

    Query qu =se.createQuery("from Users where name=:name and password =:password ");
    qu.setProperties(user);
    这句话里面你name和password都没有给赋值啊。
    或者你至少改成user.name和user.password才行啊
    String hql="from Memberinfo as u where u.name=?&&u.password";
    Query query=session.createQuery(hql);
    query.setString(0,u.getname);
                            query.setString(0,u.getPassword);
    List<User> list=query.list();
    if(query.list()==null){
    System.out.println("dao层,不存在该用户数据");
    }else{

    System.out.println("存在,返回该用户的数据");
    User user=(User) list.get(0);
    System.out.println("该用户数据为"+user);
    }
      

  4.   

    有一句打错了,应该是
     query.setString(1,u.getPassword);
    另外你用的是user,我用的是u,这是在我以前的代码上改的,所以没弄全。