日期:2014-05-16  浏览次数:20633 次

Could not execute JDBC batch update异常的解决办法

异常信息如下:

org.hibernate.exception.DataException: Could not execute JDBC batch update
?at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102)
?at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
?at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
?at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114)
?at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109)
?at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244)
?at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2395)
?at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2858)
?at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79)
?at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:268)
?at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:260)
?at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:179)
?at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
?at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
?at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
?at cn.com.shanli.skyWorld.components.core.dao.hibernateSession.OpenSessionInViewFilter.closeSession(OpenSessionInViewFilter.java:19)
?at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:208)
?at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
?at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
?at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
?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(Unknown Source)
Caused by: java.sql.BatchUpdateException: Data truncation
?at net.sourceforge.jtds.jdbc.JtdsStatement.executeBatch(JtdsStatement.java:947)
?at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
?at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)

?

原因一:你将要插入到数据库中的字段内容长度超过了数据库中实际设置的长度!!