为什么我觉得我的程序没有错,而它又要报错呢?
后来经过我的测试是List list= query.list();的错。public Toperator isOperator(String operatorName, String operatorPwd) {
Toperator operator=null;
Session session=factory.openSession();
Transaction ts=session.beginTransaction();
Query query=session.createQuery("from Toperator o where o.operatorName='"+operatorName+"'and o.operatorPwd='"+operatorPwd+"'");
List list= query.list();
Iterator it=list.iterator();
if(it.hasNext()){
operator=(Toperator)it.next();
}
ts.commit();
session.close();
return operator;
}
报的错为:org.hibernate.exception.SQLGrammarException: could not execute query
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:2216)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
org.hibernate.loader.Loader.list(Loader.java:2099)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
dao.LoginDAOImp.isOperator(LoginDAOImp.java:31)
business.LoginImp.isOperator(LoginImp.java:12)
struts.action.LoginAction.execute(LoginAction.java:56)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

解决方案 »

  1.   

    参数没有问题呀,,都是String的
      

  2.   

    认真对一下配置文件java类属性名称和数据库字段名称,hql数据属性名称。
      

  3.   

    Query query=session.createQuery("from Toperator o where o.operatorName='"+operatorName+"'and o.operatorPwd='"+operatorPwd+"'"); 
    这样写HQL太乱而且容易出错
    String hql="from Toperator o where o.operatorName=?"
    Query q=session.createQuery(hql);
    q.setString();
      

  4.   

    Query query=session.createQuery("from Toperator o where o.operatorName='"+operatorName+"'and o.operatorPwd='"+operatorPwd+"'"); 
    这样写HQL太乱而且容易出错
    String hql="from Toperator o where o.operatorName=?"
    Query q=session.createQuery(hql);
    q.setString();
      

  5.   

    看看字段名是不是xml中的名称。
      

  6.   

    直接 "from Toperator" 能查出来东西吗?
    看报错好像不是表或字段不存在.