将Hibernate从3迁移到4后出现事务问题 问题更多数据和代码

如何解决将Hibernate从3迁移到4后出现事务问题 问题更多数据和代码

问题

我已经从Hibernate 3.6.10迁移到4.3.11。这些是我的pom.xml属性

   <!--<hibernate.version>3.6.10.Final</hibernate.version>-->
    <hibernate.version>4.3.11.Final</hibernate.version>

我正在使用旧版代码,并且有这样的服务方法

  public Collection<ProtExtraccionMuestra> guardarProtExtraccionMuestras(
    Collection<ProtExtraccionMuestra> protExtraccionMuestras) {
    Date fechaEnTrada = null;
    Date fechaSalida = null;
    Collection<ProtExtraccionMuestra> muestrasRetornar = new HashSet<ProtExtraccionMuestra>();
    if (protExtraccionMuestras != null) {
      for (ProtExtraccionMuestra protExtraccionMuestra : protExtraccionMuestras) {
        Localizador.servMuestra().comprobarMuestraEnBiobanco(protExtraccionMuestra.getMuestra());
        fechaEnTrada = protExtraccionMuestra.getMuestra().getFechaEnTrada();
        fechaSalida = protExtraccionMuestra.getMuestra().getFechaSalida();
        protExtraccionMuestra = (ProtExtraccionMuestra) guardar(protExtraccionMuestra,true);
        protocoloExtraccionService.comprobarEstadoMuestra(protExtraccionMuestra.getMuestra(),fechaEnTrada,fechaSalida);
        muestrasRetornar.add(protExtraccionMuestra);
      }
    }
    return muestrasRetornar;
  }

升级后,该代码无效。我收到此错误(HibernateException:无法获取当前线程的事务同步会话):

10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1) [ERROR,ExceptionControllerAdvice,http-/127.0.0.1:63724-1] EXCEPTION TRACE: 
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1) org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.gva.san.fisabio.rvb.HibernateDAO.getSession(HibernateDAO.java:31)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.gva.san.fisabio.rvb.HibernateDAO.merge(HibernateDAO.java:59)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at util.hibernate.DiUtilHibernate.merge(DiUtilHibernate.java:166)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at service.AbstractService.modificar(AbstractService.java:1052)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at service.GenericCRUDSImpl.guardar(GenericCRUDSImpl.java:110)
10:32:54,135 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.di.biobanco.csisp.laboratorio.service.ProtExtraccionMuestraServiceImpl.guardarProtExtraccionMuestras(ProtExtraccionMuestraServiceImpl.java:78)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at java.lang.reflect.Method.invoke(Method.java:498)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at com.sun.proxy.$Proxy58.guardarProtExtraccionMuestras(UnkNown Source)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.gva.san.fisabio.rvb.controller.LaboratorioController.guardarProtExtraccionMuestras(LaboratorioController.java:128)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.gva.san.fisabio.rvb.controller.LaboratorioController$$FastClassBySpringcglib$$7fedee67.invoke(<generated>)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.aop.framework.cglibAopProxy$DynamicAdvisedInterceptor.intercept(cglibAopProxy.java:651)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at es.gva.san.fisabio.rvb.controller.LaboratorioController$$EnhancerBySpringcglib$$b9797364.guardarProtExtraccionMuestras(<generated>)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:220)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:134)
10:32:54,136 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:116)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:963)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:897)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:220)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:197)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
10:32:54,139 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
10:32:54,140 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
10:32:54,141 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
10:32:54,141 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
10:32:54,141 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
10:32:54,142 INFO  [stdout] (http-/127.0.0.1:63724-1)   at java.lang.Thread.run(Thread.java:745)

因此,我已使其与@Transactional装饰器进行事务处理。

然后我出现以下错误 InvalidDataAccessApiUsageException:对象引用了一个未保存的临时实例):

16:50:05,587 ERROR es.gva.san.fisabio.rvb.controller.advice.ExceptionControllerAdvice,http-/0.0.0.0:63004-6:41 - EXCEPTION TRACE: 
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: es.di.biobanco.csisp.laboratorio.entity.ProtocoloExtraccion; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: es.di.biobanco.csisp.laboratorio.entity.ProtocoloExtraccion
    at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:190)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:730)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:592)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.cglibAopProxy$DynamicAdvisedInterceptor.intercept(cglibAopProxy.java:655)
    at es.gva.san.fisabio.rvb.controller.LaboratorioController$$EnhancerBySpringcglib$$432cae2f.guardarProtExtraccionMuestras(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:220)
    at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:134)
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:116)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:963)
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:897)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:220)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:197)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:215)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: es.di.biobanco.csisp.laboratorio.entity.ProtocoloExtraccion
    at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:294)
    at org.hibernate.type.EntityType.getIdentifier(EntityType.java:537)
    at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:311)
    at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:321)
    at org.hibernate.type.TypeHelper.findDirty(TypeHelper.java:310)
    at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:4243)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:546)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:232)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:159)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:231)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:102)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:55)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
    ... 76 more

更多数据和代码

经过一些验证后,这是保存对象的方式:

在AbstractEntity的某些继承人中:

    public AbstractEntity guardar(AbstractEntity entity,boolean merge) {
        return super.modify(entity,merge);
    }
  public HibernateDAO getHibernateTemplate() {
    return this;
  }
[...]

  public AbstractEntity modify(AbstractEntity obj,boolean merge) {
    if (!merge) {
      try {
        this.getHibernateTemplate().saveOrUpdate(obj);
      } catch (Exception e) {
        logger.error(e);
        obj = DiUtilHibernate.merge(obj,getSession());
        this.getHibernateTemplate().saveOrUpdate(obj);
      }
    } else {
      obj = DiUtilHibernate.merge(obj,this.getHibernateTemplate());
    }
   return obj;
  }

这个可怕的实用程序类:

  /**
   * Merge function,to load only the required entities
   */
  public static AbstractEntity merge(AbstractEntity ent,Session ses) {
    // We save the values,before they are lost with the merge
    String lazysCargados = ent.getLazysCargados();
    boolean valorLazys = ent.getCargarLazysProxy();
    return afterMerge((AbstractEntity) ses.merge(ent),lazysCargados,valorLazys);
  }

如果您需要其他一些代码或说明,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?