`
阅读更多
今天项目中一直在抱一个Exception  ,一直在查找 。最后还是应以一句,细节打败ending。
Hibernate:
    select
        SEQ_OPERATELOG.nextval
    from
        dual
Hibernate:
    insert
    into
        CUSTOME_OPERLOG
        (session_id, date, time, duration, times, operateLog_id)
    values
        (?, ?, ?, ?, ?, ?)
org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into CUSTOME_OPERLOG (session_id, date, time, duration, times, operateLog_id) values (?, ?, ?, ?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
at com.funo.daoImp.UpdateAccessLogDaoImp.saveOperateLog(UpdateAccessLogDaoImp.java:78)
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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy0.saveOperateLog(Unknown Source)
at com.funo.serviceImp.UpdateAccessLogServiceImp.saveOperateLog(UpdateAccessLogServiceImp.java:71)
at com.funo.util.AccessLogJsonUtil.parseProperties(AccessLogJsonUtil.java:142)
at com.funo.servlet.GetAccessLogXMLServlet.doPost(GetAccessLogXMLServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407)
... 33 more
Caused by: java.sql.BatchUpdateException: ORA-01747: user.table.column, table.column 或列说明无效

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10768)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
... 40 more
保存操作日志失败
....jsonObj_body_error....
null
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=02:46:14, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=87be42ff9967e3a9713c398d24137987, versionCode=1]...util..中打印
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=02:46:14, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=87be42ff9967e3a9713c398d24137987, versionCode=1]...service..打印
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=02:46:14, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=87be42ff9967e3a9713c398d24137987, versionCode=1]...在accesslOG中打印
Hibernate:
    select
        SEQ_ACCESSLOG.nextval
    from
        dual
Hibernate:
    insert
    into
        CUSTOME_ACCESSLOG
        (sessionid, appkey, ACCESSTYPE, app_version, LANGUAGE, os_version, sdk_type, sdk_version, version_code, idmd5, lat, lng, ip, mto, logDate, logTime, resolution, cpu, device_modle, os, country, macc, channel, accessLog_id)
    values
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
.同样是插入 ,为什么第一个会抱错误呢。
找呀,也没有发现什么不对的地方。结果把hibernate生成的insert语句放在数据库中测试 就发现错误了。表中的字段识别不了,是哪个呢,我猜是date和time .因为把他们换了后。就成功插入了!
Hibernate:
    select
        SEQ_OPERATELOG.nextval
    from
        dual
Hibernate:
    insert
    into
        CUSTOME_OPERLOG
        (session_id, OPERATE_date, OPERATE_time, duration, times, operateLog_id)
    values
        (?, ?, ?, ?, ?, ?)
....jsonObj_body_error....
null
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=03:00:58, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=c01e2dd9b6e27609345762aa355832ec, versionCode=1]...util..中打印
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=03:00:58, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=c01e2dd9b6e27609345762aa355832ec, versionCode=1]...service..打印
AccessLog [accessLogId=null, accessType=2G/3G, appVersion=1.0, appkey=4f279d5b527015665c0000fc, country=null, cpu=Processor : ARM926EJ-S rev 5 (v5l), deviceModle=sdk, idmd5=528447f4ffb4e4824a2fd1d1f0cd62, ip=null, language=null, lat=0, lng=0, logDate=2012-03-02, logTime=03:00:58, macc=null, mto=null, os=Android, osVersion=2.2, resolution=480*320, sdkType=Android, sdkVersion=3.1.1, sessionId=c01e2dd9b6e27609345762aa355832ec, versionCode=1]...在accesslOG中打印
Hibernate:
    select
        SEQ_ACCESSLOG.nextval
    from
        dual
Hibernate:
    insert
    into
        CUSTOME_ACCESSLOG
        (sessionid, appkey, ACCESSTYPE, app_version, LANGUAGE, os_version, sdk_type, sdk_version, version_code, idmd5, lat, lng, ip, mto, logDate, logTime, resolution, cpu, device_modle, os, country, macc, channel, accessLog_id)
    values
        (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

总结一下几点;
1.做数据库操作时候,一定要仔细,最好字段都是COPY的要不然,挠破头皮也出不了结果。
2.出现Could not execute JDBC batch update;这样的异常时基本错误是a.数据库里面的表没创建,这点应该去检查一下,可能楼创建了。

b.数据库对应表里面的字段没有创建,导致插入语句的时候报错。

c.数据库里面的表结构与配置文件中的表结构不一致。
3.发现如此大的错误一定要沉住气的看到底。其实有一句错误信息已经抱出了是数据库字段识别错误。Caused by: java.sql.BatchUpdateException: ORA-01747: user.table.column, table.column 或列说明无效。
分享到:
评论

相关推荐

    Hibernate 配置各种数据库

    Hibernate 配置各种数据库 Hibernate 是一个基于 Java 的持久层框架,提供了一个抽象的数据访问层,能够与多种数据库进行集成。在 Hibernate 的配置文件中,我们可以配置不同的数据库连接,包括驱动程序、URL 等...

    hibernate jar包:hibernate-commons-annotations-4.0.1.Final.jar等

    Hibernate.jar包,Hibernate可以应用在任何使用JDBC的场合,包含 hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.12.Final.jar hibernate-ehcache-4.1.12.Final.jar hibernate-entitymanager-...

    Hibernate入门到精通

    "Hibernate入门到精通" Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 ...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...

    hibernate学习资料大全

    【hibernate学习资料大全】 Hibernate 是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。这个压缩包包含了丰富的Hibernate学习资源,旨在帮助开发者深入理解和熟练掌握这一强大的...

    Hibernate-extensions 完整安装包

    《Hibernate-Extensions全面指南》 Hibernate,作为Java领域中的一款著名对象关系映射(ORM)框架,极大地简化了数据库操作。然而,为了满足更复杂的业务需求,Hibernate还提供了丰富的扩展功能,这就是我们今天要...

    hibernate-release-4.1.4

    【描述】中的"hibernate的jar包"指的是Hibernate框架的运行库文件,这些JAR文件包含了Hibernate的所有核心API、实现和依赖库,如Hibernate Commons Annotations、Hibernate EntityManager、Hibernate Core等。...

    hibernate基础jar包

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者使用面向对象的方式来操作数据库,极大地简化了数据访问层的编程工作。这个压缩包包含了Hibernate的基础jar包,这些jar文件是开发Hibernate应用所...

    HibernateTools-3.2.4

    HibernateTools是Java开发人员在使用Hibernate ORM框架时的有力辅助工具集,主要目的是为了提高开发效率,简化数据库操作。在HibernateTools 3.2.4版本中,它包含了一系列的特性与插件,以支持更便捷地进行对象关系...

    kingbaseV8 hibernate jdbc 驱动

    在Java开发环境中,与KingbaseV8数据库进行交互通常会用到Hibernate框架和JDBC驱动。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作,通过将Java对象与数据库表进行映射,...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3 是一个强大的Java持久化框架,它允许开发者将数据库操作与业务逻辑解耦,使得应用程序的开发更为简便。这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并...

    Hibernate3的依赖包

    Hibernate3是一个广泛使用的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作,极大地简化了Java应用程序与数据库之间的交互。在这个"Hibernate3的依赖包"中,包含了运行Hibernate3应用...

    hibernate和MySQL的jar

    标题中的“hibernate和MySQL的jar”指的是Hibernate ORM框架与MySQL数据库之间的连接库。Hibernate是一种流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL...

    hibernate4.3完整jar包

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端...

    Hibernate 中文api 等学习资料

    标题"Hibernate 中文api 等学习资料"暗示了这是一组针对Hibernate ORM框架的中文学习资源,包括API文档和其他指南,旨在帮助用户更好地理解和使用Hibernate。 描述中的"hibernate orm框架api中文文档,学习资料,...

    hibernate.5.1.0.jar全部

    包含hibernate所有所需jar包还有一些其他包日志包、jpa支持包等: 列如:hibernate-core-5.1.0.Final.jar hibernate-ehcache-5.1.0.Final.jar hibernate-entitymanager-5.1.0.Final.jar hibernate-envers-5.1.0....

    Hibernate入门jar包

    Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使开发者可以更加专注于业务逻辑而不是数据访问层的实现。本压缩包提供的是Hibernate入门所需的jar包,包括了Hibernate的核心库以及与之...

    hibernate3必要jar包

    Hibernate3 是一个非常重要的Java持久化框架,它允许开发者将对象模型与数据库关系模型进行映射,从而简化了数据存取的过程。这个压缩包“hibernate3必要jar包”显然是针对Hibernate3版本的,已经去除了冗余的库文件...

    hibernate所需包:hibernate3,依赖包,JDBC

    Hibernate3是Hibernate的第三个主要版本,发布于2005年,它提供了一种将Java对象与数据库表之间的映射方式,使得数据库操作更加面向对象。该框架支持多种数据库,包括MySQL、Oracle、SQL Server等,并且通过JDBC API...

    hibernate_3.2官方开发包

    Hibernate 是一个著名的开源对象关系映射(ORM)框架,它为Java开发者提供了便捷的数据持久化方式,使得在Java应用程序中操作数据库变得更加简单。这个“hibernate_3.2官方开发包”包含了所有你需要开发基于...

Global site tag (gtag.js) - Google Analytics