现有 task_info(有个term字段) user_info 两张表
我在页面中有个 选择term的页面
然后跳转到ACTION    我执行了 public List browsePersonalTask(UserInfo user,String term) 方法
就是 按user对象 和学期找到具体的一个教师列表返回。
部分代码:                        String hql ="from TaskInfo as a where a.tno=:tno";
if(term!=null||!"".equals(term)){
hql = "from TaskInfo as a where a.tno=:tno and a.term=:term";
}
Query query = session.createQuery(hql);
System.out.println(user.getTno());
query.setString("tno", user.getTno().trim());
query.setString("term", term);
tx = session.beginTransaction();
result = query.list();
if(!Hibernate.isInitialized(result)){
Hibernate.initialize(result);
}
tx.commit();后台报错
org.hibernate.QueryException: could not resolve property: tno of: com.ORM.TaskInfo [from com.ORM.TaskInfo as a where a.tno=:tno and a.term=:term]
是怎么回事?能否给指点指点

解决方案 »

  1.   

    tno 是不是没有在TaskInfo 里面定义
      

  2.   

    看映射文件(TaskInfo.hbm.xml)有没有tno,
    还有你的query.setString("term", term)会出问题
      

  3.   

    如果用的是标注的方式,看下tno的标注有没有?ps: csdn的编辑功能太强悍
      

  4.   

    其实 是我搞错了  因为UserInfo 是主键  而 TaskInfo是外键。我就是想实现 如果页面没有传过来term值 就按tno找   如果有值 就按tno和term找TaskInfo.                        实现类的代码:
                            String hql ="from TaskInfo as a where a.userInfo=:userInfo";
    Query query = session.createQuery(hql);
    query.setEntity("userInfo", user);
    if(term!=null||!"".equals(term)){
    hql = "from TaskInfo as a where a.userInfo=:userInfo and a.term=:term";
    query.setString("term", term);
    }

    tx = session.beginTransaction();
    result = query.list();
                            if(!Hibernate.isInitialized(result)){
    Hibernate.initialize(result);
    }
    tx.commit();可是报错 :
    java.lang.IllegalArgumentException: Parameter term does not exist as a named parameter in [from TaskInfo as a where a.userInfo=:userInfo]
    不知道 怎么解决
      

  5.   

      String hql ="from TaskInfo as a where a.userInfo=:userInfo";
    Query query = session.createQuery(hql);
    query.setEntity("userInfo", user);
    if(term!=null||!"".equals(term)){
    hql = "from TaskInfo as a where a.userInfo=:userInfo and a.term=:term";
    query.setEntity("userInfo", user);
    query.setString("term", term);
    }tx = session.beginTransaction();
    result = query.list();
      if(!Hibernate.isInitialized(result)){
    Hibernate.initialize(result);
    }
    tx.commit();
      

  6.   

    后台输出:
    java.lang.IllegalArgumentException: Parameter term does not exist as a named parameter in [from TaskInfo as a where a.userInfo=:userInfo]
    5楼的写法 还是报这个错误。
      

  7.   

    term 这个属性你确定TaskInfo里面这个 实体类有????
      

  8.   

    有  不过现已解决
    自己 不用心。
    还是谢谢大家
    Query query = null;
    if(term==null||"".equals(term)){
    String hql ="from TaskInfo as a where a.userInfo=:userInfo";
    query = session.createQuery(hql);
    query.setEntity("userInfo", user);
    }
    else 
    {
    String hql = "from TaskInfo as a where a.userInfo=:userInfo and a.term=:term";
    query = session.createQuery(hql);
    query.setEntity("userInfo", user);
    query.setString("term", term);
      }
      tx = session.beginTransaction();
      result = query.list();
        if(!Hibernate.isInitialized(result)){
      Hibernate.initialize(result);
      }
      tx.commit();