org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2150)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2026)
at org.hibernate.loader.Loader.list(Loader.java:2021)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:109)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1537)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:165)
at com.monica.bussiness.dao.hibernate.HibernateDaoSupport$1.doInHibernate(HibernateDaoSupport.java:182)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:362)
at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:332)
at com.monica.bussiness.dao.hibernate.HibernateDaoSupport.findWithListResult1(HibernateDaoSupport.java:174)
at com.monica.bussiness.dao.DAOImp.find1(DAOImp.java:266)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp.getQueryDDXSReport(ClientDDXSReportServiceImp.java:79)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp.getReportData(ClientDDXSReportServiceImp.java:309)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$FastClassByCGLIB$$55cf729d.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$EnhancerByCGLIB$$1c4beb39.getReportData(<generated>)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$FastClassByCGLIB$$55cf729d.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$EnhancerByCGLIB$$b00eebac.getReportData(<generated>)
at com.monica.exttestcase.report.ClientDDXSReportTest.excelDDXSReportTest(ClientDDXSReportTest.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runTestMethod(UnitilsJUnit4TestClassRunner.java:169)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:90)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:40)
at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:58)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:63)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: 列名无效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3291)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914)
at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1575)
at org.hibernate.type.LongType.get(LongType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:78)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:69)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1088)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:553)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
at org.hibernate.loader.Loader.doList(Loader.java:2147)
... 54 more

解决方案 »

  1.   

    at com.monica.bussiness.dao.DAOImp.find1(DAOImp.java:268)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp.getQueryDDXSReport(ClientDDXSReportServiceImp.java:79)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp.getReportData(ClientDDXSReportServiceImp.java:309)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$FastClassByCGLIB$$55cf729d.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$EnhancerByCGLIB$$1c4beb39.getReportData(<generated>)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$FastClassByCGLIB$$55cf729d.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:714)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:652)
    at com.monica.bussiness.report.service.ClientDDXSReportServiceImp$$EnhancerByCGLIB$$b00eebac.getReportData(<generated>)
    at com.monica.exttestcase.report.ClientDDXSReportTest.excelDDXSReportTest(ClientDDXSReportTest.java:48)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
    at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runTestMethod(UnitilsJUnit4TestClassRunner.java:169)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
    at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:90)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:40)
    at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:58)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:63)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Caused by: org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:634)
    at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:408)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:367)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:332)
    at com.monica.bussiness.dao.hibernate.HibernateDaoSupport.findWithListResult1(HibernateDaoSupport.java:174)
    at com.monica.bussiness.dao.DAOImp.find1(DAOImp.java:266)
    ... 44 more
    Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
    at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
    at org.hibernate.loader.Loader.doList(Loader.java:2150)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2026)
    at org.hibernate.loader.Loader.list(Loader.java:2021)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:109)
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1537)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:165)
    at com.monica.bussiness.dao.hibernate.HibernateDaoSupport$1.doInHibernate(HibernateDaoSupport.java:182)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:362)
    ... 47 more
    Caused by: java.sql.SQLException: 列名无效
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
    at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3291)
    at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:1914)
    at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1575)
    at org.hibernate.type.LongType.get(LongType.java:28)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:78)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:69)
    at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1088)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:553)
    at org.hibernate.loader.Loader.doQuery(Loader.java:689)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
    at org.hibernate.loader.Loader.doList(Loader.java:2147)
    ... 54 more
      

  2.   

    这是你的配置问题
    你用的应该是hibernate吧
    应该是表的列比叫多
    你先查查看  插入的过程中 你配置的列名与数据库中的名字不一样 位置或名字错误
      

  3.   

    Caused by: java.sql.SQLException: 列名无效 
    把sql拿去数据库执行以下,或者你把代码和配置文件完整的贴上来
      

  4.   

    我也有此问题,我的业务类是:
    public List selectByNtype(String ntype){
    final String type=ntype;
    List list=this.getHibernateTemplate().executeFind(
    new HibernateCallback() {
    public Object doInHibernate(Session s)
    throws HibernateException, SQLException {
    // TODO Auto-generated method stub
    DetachedCriteria dc = DetachedCriteria
    .forClass(Directory.class);
    dc.add(Restrictions.eq("NTYPE",type));
    dc.add(Restrictions.eq("UPID", 0));
    Criteria c = dc.getExecutableCriteria(s);
    return c.list();
    }
    }
    );
    return list;
    }
    application.xml文件:<!-- 数据源 -->
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="oracle.jdbc.driver.OracleDriver">
    </property>
    <property name="url"
    value="jdbc:oracle:thin:@192.168.1.101:1522:jbpm">
    </property>
    <property name="username" value="webcfg"></property>
    <property name="password" value="webcfg"></property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.Oracle9Dialect
    </prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/wendang/model/Directory.hbm.xml</value>
    <value>com/wendang/model/Documents.hbm.xml</value>
    </list>
    </property>
    </bean>
    <!-- action由 Spring依赖注入 -->
    <bean id="directoryAction"
    class="com.wendang.action.DirectoryAction" scope="prototype">
    <property name="directoryManager" ref="directoryManager" />
    <property name="documentManager" ref="documentManager" />
    </bean>
    ...
    急 急 急
      

  5.   

    要么是SQL的语法错误
    要么就是配置文件和实体类 和数据库不匹配
      

  6.   

    把你的映射文件贴出来!!应该是javabean对应数据库的列时候出问题了!!比较下。
      

  7.   

    把hibernate.hbm.xml文件和实体bean贴出来,就可以看出来了
      

  8.   

    查看下配置文件.
    1.表名是否正确
    2.bean中定义的字段在映射文件中是否存在.
    3.映射文件中的字段在数据库是否存在
    4.写hql的时候,调用类对象是否正确.
      

  9.   

    应该是你的Hibernate映射文件的列的名字和数据库不匹配或者缺少了,仔细检查一下...