Could not reset reader – while using BLOB

I have an POJO entity object which has two blob properties in it. The first property is nothing but string.

license.setViewCert(Hibernate.createBlob(sb.toString().getBytes()));

the second blob is a file stream

FileInputStream fileInputStream = new  FileInputStream(file);
license.setLicenseFile(Hibernate.createBlob(fileInputStream));  //no lines beyond this

When I save this object using the method

@Transactional
 public void save(Object  entity){
 logger.info("Saving object:"+entity);
 HibernateTemplate hibernateTemplate = super.getHibernateTemplate();
 Serializable save = hibernateTemplate.save(entity);
 hibernateTemplate.flush();
 hibernateTemplate.refresh(entity);
 logger.info("Object save successful:"+entity+" "+save);
 }

I got the following issue in hibernateTemplate.save(entity). I googled it but no solutions helped. I just save the blob entry. I am not opening the blob stream anywhere in my code. Any ideas why I am getting this?


org.springframework.jdbc.UncategorizedSQLException:  Hibernate operation: could not update:  [com.testsite.license.entity.License#0]; uncategorized SQLException for  SQL [update LICENSE_INFO set IP=?, ..... COMPANY_ID=? where ID=?]; SQL  state [null]; error code [0]; could not reset reader; nested exception  is java.sql.SQLException: could not reset reader
 at  org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
 at  org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
 at  org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
 at  org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
 at  org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
 at  org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)
 at com.testsite.common.dao.BaseDAO.save(BaseDAO.java:39)
 at  com.testsite.license.service.LicenseService.addLicense(LicenseService.java:114)
 at  com.testsite.license.service.LicenseService.addLicense(LicenseService.java:151)
 at  com.testsite.license.view.LicenseUploadAction.execute(LicenseUploadAction.java:84)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at  sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
 at  com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
 at  com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
 at  org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
 at  com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at  com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
 at  com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:306)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
 at  com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
 at  com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
 at  org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
 at  org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
 at  org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
 at  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.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:191)
 at  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 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:298)
 at  org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
 at  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 at  org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Unknown Source)
Caused by:  java.sql.SQLException: could not reset reader
 at  org.hibernate.lob.BlobImpl.getBinaryStream(BlobImpl.java:83)
 at  org.hibernate.type.BlobType.set(BlobType.java:46)
 at  org.hibernate.type.BlobType.nullSafeSet(BlobType.java:117)
 at  org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1997)
 at  org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2371)
 at  org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)
 at  org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)
 at  org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)
 at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
 at  org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
 at  org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
 at  org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
 at  org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
 at  org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
 at  org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)
 ... 70 more

Environment:
Spring integrated with Hibernate
MySQL as backend

Advertisements

One thought on “Could not reset reader – while using BLOB

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s