org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
Bonjour,
Voilà, j'ai une méthode de suppression qui existe déjà et est utilisée sans problème.
J'appelle cette méthode dans un nouveau bout de code pour une autre fonctionnalité et là j'ai une erreur qui apparaît. La suppression de mon élément ne se fait pas.
Erreur dans la trace de l'appli
Code:
HibernateWrapException: La version de l'élément en cours de modification est dépassée. Veuillez fermer l'éditeur en cours d'utilisation et renouveller l'opération.
et erreur sur jboss
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| 2014-08-06 11:08:05,049 INFO [STDOUT] (http-DV02%2F10.194.5.18-8080-1) 11:08:05,048 WARN RemoteInvocationTraceInterceptor:80 - Processing of HttpInvokerServiceExporter remote call resulted in fatal exception: fr.gesdesdep.application.business.entity.conception.fr.sihpic.remboursements.etatsFrais.IEtatFraisManager.deleteEtatFrais
com.compuware.alturadev.entity.dao.exception.ConcurrencyFailureException: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [fr.gesdesdep.application.business.entity.conception.fr.sihpic.remboursements.etatsFrais.internals_etatsFrais.EtatFrais#90c3a748ffc205126a306a30fadf8fd9]
at com.compuware.alturadev.hibernate.exception.ExceptionConverter.convert(ExceptionConverter.java:103)
at fr.gesdesdep.application.business.entity.conception.fr.sihpic.remboursements.etatsFrais.internals_etatsFrais.dao.EtatFraisDaoImplHibernate.delete(EtatFraisDaoImplHibernate.java:227)
at fr.gesdesdep.application.business.entity.conception.fr.sihpic.remboursements.etatsFrais.internals_etatsFrais.EtatFraisManager.deleteEtatFrais(EtatFraisManager.java:255)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy440.deleteEtatFrais(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:74)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at gdeppres.application.presentation.filters.SetCharacterEncodingFilterGdeppresWeb.doFilter(SetCharacterEncodingFilterGdeppresWeb.java:140)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:810)
Caused by:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [fr.gesdesdep.application.business.entity.conception.fr.sihpic.remboursements.etatsFrais.internals_etatsFrais.EtatFrais#90c3a748ffc205126a306a30fadf8fd9]
at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1680) |
Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11
| private void desintegreNdFNR(INoteFraisRetenue notefraisret) {
if (etatFraisDest != null) {
etatFraisDest = etatFraisManager.retirerNote0aEtatFrais(etatFraisDest, notefraisret);
etatFraisManager.saveEtatFrais(etatFraisDest);
// Suppression de l'état de Frais
List<INoteFraisRetenue> listeNFRestante = etatFraisDest.getNoteFraisRetenue();
// Si il n'y a plus de note de frais dans l'état de frais
// (la liste est vide) on le supprime
if (listeNFRestante == null) {
etatFraisManager.deleteEtatFrais(etatFraisDest);
} |
La méthode qui pète est deleteEtatFrais.