在执行到以下代码时:
   Query query=
         session.createQuery("from Toperator t where t.operatorName='"+operatorName+"'");
   List list=query.list();
   发生以下异常:
   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:2148)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
org.hibernate.loader.Loader.list(Loader.java:2024)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
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.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  不知道是什么原因,是不是配置文件有问题还是其它原因,请高手指教!

解决方案 »

  1.   

    SQL异常。SQL语法异常,检查一下语法。你也看一下这个问题:
    http://topic.csdn.net/u/20080123/18/0c18f6a6-8af9-4c47-afa4-40838b171fa8.html
      

  2.   

    SQL异常。SQL语法异常,检查一下语法。你也看一下这个问题:
    http://topic.csdn.net/u/20080123/18/0c18f6a6-8af9-4c47-afa4-40838b171fa8.html
      

  3.   

    Query   query= 
                      session.createQuery("from   Toperator   t   where   t.operatorName='"+operatorName+"'"); 
          List   list=query.list(); 你改成这样看看Query   query=session.createQuery("From Toperator   t   where   t.operatorName=?"); 
          query.setString(0,operatorName);
          List   list=query.list(); 
    同时你也看看配置文件.LoginAction你也看看有没有什么问题
      

  4.   

    我试了,问题还是没有解决.这个项目是从别的网站down下来的.我发现工程里面缺少了hibernate.cfg.xml文件,而在HibernateSessionFactory里也调用了这个文件:
    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
    于是我自已手工加入了这个文件,但还是有同样问题.我发现在spring的配置文件applicationContext.xml里已经有了访问数据库的相关配置,内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>      
    <bean id="MyData" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
    <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="url">
    <value>jdbc:oracle:thin:@192.168.17.18:1521:yxdb</value>
    </property>
    <property name="username">
    <value>sms</value>
    </property>
    <property name="password">
    <value>sms</value>
    </property>
    </bean>

    <bean id="MySessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     
    <property name="dataSource">
    <ref bean="MyData" />
    </property>

    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>po/Tcharge.hbm.xml</value>
    <value>po/TchargeRule.hbm.xml</value>
    <value>po/Tcustomer.hbm.xml</value>
    <value>po/Tmobiles.hbm.xml</value>
    <value>po/Toperator.hbm.xml</value>
    <value>po/Tuser.hbm.xml</value></list>
    </property></bean>
    <bean id="logindao" class="dao.LoginDAOImp">
    <property name="factory">
    <ref bean="MySessionFactory"/>
    </property>
    </bean>
    <bean id="admindao" class="dao.AdminOperatorDAOImp">
    <property name="factory">
    <ref bean="MySessionFactory"/>
    </property>
    </bean>
    <bean id="operatordao" class="dao.OperatorDAOImp">
    <property name="factory">
    <ref bean="MySessionFactory"/>
    </property>
    </bean>

    <bean id="loginservice" class="business.LoginImp">
    <property name="login">
    <ref bean="logindao"/>
    </property> 
    </bean>
    <bean id="adminservice" class="business.AdminOperatorImp">
    <property name="adminoperator">
    <ref bean="admindao"/>
    </property>
    </bean>
    <bean id="operatorservice" class="business.OperatorImp">
    <property name="operator">
    <ref bean="operatordao"/>
    </property>
    </bean>
    </beans>
    请各位大虾赐教!!!!
      

  5.   

    你这是一个ssh架构的项目啊,hibernate.cfg.xml已经集成仔了applicationContext.xml里面了啊,这是正常的啊你的数据库配置对吗?<bean   id="MyData"   class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property   name="driverClassName"> 
    <value> oracle.jdbc.driver.OracleDriver </value> 
    </property> 
    <property   name="url"> 
    <value> jdbc:oracle:thin:@192.168.17.18:1521:yxdb </value> 
    </property> 
    <property   name="username"> 
    <value> sms </value> 
    </property> 
    <property   name="password"> 
    <value> sms </value> 
    </property> 
    </bean> 
    在这个项目中数据库用的是oracle 密码和用户名都是sms 数据库地址是192.168.17.18 这些你都配置好了吗?
      

  6.   

    ssh架构的项目hibernate.cfg.xml已经集成在applicationContext.xml里面了,一般情况是不会要hibernate.cfg.xml这文件的,如果配置文件中使用了事务  把相关的tag删掉就好了但是问题肯定是你配置文件错了.
      

  7.   

    session.createQuery("from   Toperator   t   where   t.operatorName='"+operatorName+"'"); 
    这句写法有问题 
      

  8.   

    看一下Toperator的包导进来没有?
      

  9.   

    用spring管理hibernate一般用声明式事务处理
    具体操作的类要继承HibernateDaoSupport类
    方法中的语句为:
    List list = getHibernateTemplate().find("From Toperator   t   where   t.operatorName=?",operatorName);
      

  10.   

    应该是SQL语句的问题,可以参考http://blog.csdn.net/jinlong0/archive/2008/01/09/2031072.aspx
      

  11.   

    SQL的问题,具体那里出了问题,俺也没有看出来
      

  12.   

    按照13楼说的那样修改没用,提示找不到类,也导不进来,我用的hibernate3.0不支持find()方法了
      

  13.   

    有没有搞错啊,你是用的是SSH的架构啊,而spring的applicationContext.xml文件已经包含了对hibernate的支持了
    当然,也可以保留hibernate-cfg.xml文件,然后在applicationContext.xml文件中进行设置
    但一般都是放在一个spring 的配置文件中的
    这个错误应该是和配置文件有关的吧
    建议你仔细检查配置文件
      

  14.   

    不好意思哈,小弟也觉得是Query query = session.createQuery("from   Toperator   t   where   t.operatorName='"+operatorName+"'"); 这个句子有点问题哈,但是一时也不怎么说的上来,好象是那个方法有点问题哦...