为什么我觉得我的程序没有错,而它又要报错呢? 
我测试了。程序是在这行出的错误 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.   

    Query query=session.createQuery("from Toperator o where o.operatorName='"+operatorName+"'and o.operatorPwd='"+operatorPwd+"'"); List list= query.list(); 看看这个
    Query query = session.createQuery("From Toperator o where o.name=? and o.pwd=?");
    query.setString(0,operatorName);
    query.setString(1,operatorPwd);
      

  2.   


    Query query = session.createQuery("From Toperator o where o.name=? and o.pwd=?");   query .setParameter(0, operatorName);
       query .setParameter(1, operatorPwd);
      

  3.   

    注意一下语句‘and’之前的空格
      

  4.   

    就是注意空格的问题还有你自己在定位问题的时候,有没有试过把那个 HQL 语句输出来看看呢?