javax.persistence.TransactionRequiredException: no hay ninguna transacción en curso

I've a service that store many objects into DB with HQL. But I've this exception

javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:789)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365)
at $Proxy42.flush(Unknown Source)
at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy42.flush(Unknown Source)
at org.skyway.spring.util.dao.AbstractJpaDao.flush(AbstractJpaDao.java:90)
at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
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:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy52.flush(Unknown Source).........

May be the problem is a lot of number of concurrent operations active on DB. Any suggestions?

preguntado el 31 de julio de 12 a las 13:07

1 Respuestas

You need to begin and commit a Hibernate transaction using session factory in each of your service methods or use AOP (Aspect Oriented Programming) for automatic starting,commit/rollback of transactions for you methods. Please refer este.

Respondido 31 Jul 12, 13:07

all my methods have '@transactional' annotation - claudio pomo

ok, but problem is definitely because of transaction not being attached. Do you have <tx:annotation-driven/> in your spring beans context? - Vikas

si <tx:annotation-driven transaction-manager="transactionManager"/> - claudio pomo

beginning everything works, but I get the exception after a few successes - claudio pomo

@ClaudioPomo Although, you have accepted my answer, I am curious what was the exact error because you said that you were already following all my suggestions. - Vikas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.