Transaction error with new Spring/Hibernate versions -
we using spring 4.3.4.release hibernate 5.2.10.final. since version update (from spring 4.1.6.release , hibernate 4.3.1:final) following error when executing dao code within transaction
javax.persistence.transactionrequiredexception: executing update/delete query @ org.hibernate.query.internal.abstractproducedquery.executeupdate(abstractproducedquery.java:1496) ~[hibernate-core-5.2.10.final.jar:5.2.10.final] internal @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[?:1.8.0_25] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[?:1.8.0_25] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_25] @ java.lang.reflect.method.invoke(method.java:483) ~[?:1.8.0_25] @ org.springframework.aop.support.aoputils.invokejoinpointusingreflection(aoputils.java:333) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.invokejoinpoint(reflectivemethodinvocation.java:190) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:157) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.methodinvocationproceedingjoinpoint.proceed(methodinvocationproceedingjoinpoint.java:85) ~[spring-aop-4.3.4.release.jar:4.3.4.release] internal @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[?:1.8.0_25] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[?:1.8.0_25] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_25] @ java.lang.reflect.method.invoke(method.java:483) ~[?:1.8.0_25] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethodwithgivenargs(abstractaspectjadvice.java:629) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethod(abstractaspectjadvice.java:618) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.aspectjaroundadvice.invoke(aspectjaroundadvice.java:70) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:168) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:99) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:282) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:96) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:92) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.jdkdynamicaopproxy.invoke(jdkdynamicaopproxy.java:213) ~[spring-aop-4.3.4.release.jar:4.3.4.release] internal @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[?:1.8.0_25] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[?:1.8.0_25] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_25] @ java.lang.reflect.method.invoke(method.java:483) ~[?:1.8.0_25] @ org.springframework.aop.support.aoputils.invokejoinpointusingreflection(aoputils.java:333) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.invokejoinpoint(reflectivemethodinvocation.java:190) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:157) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.methodinvocationproceedingjoinpoint.proceed(methodinvocationproceedingjoinpoint.java:85) ~[spring-aop-4.3.4.release.jar:4.3.4.release] internal @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[?:1.8.0_25] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[?:1.8.0_25] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_25] @ java.lang.reflect.method.invoke(method.java:483) ~[?:1.8.0_25] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethodwithgivenargs(abstractaspectjadvice.java:629) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.abstractaspectjadvice.invokeadvicemethod(abstractaspectjadvice.java:618) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.aspectj.aspectjaroundadvice.invoke(aspectjaroundadvice.java:70) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:168) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactioninterceptor$1.proceedwithinvocation(transactioninterceptor.java:99) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactionaspectsupport.invokewithintransaction(transactionaspectsupport.java:282) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.transaction.interceptor.transactioninterceptor.invoke(transactioninterceptor.java:96) ~[spring-tx-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.adapter.afterreturningadviceinterceptor.invoke(afterreturningadviceinterceptor.java:52) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:168) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.interceptor.exposeinvocationinterceptor.invoke(exposeinvocationinterceptor.java:92) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.3.4.release.jar:4.3.4.release] @ org.springframework.aop.framework.jdkdynamicaopproxy.invoke(jdkdynamicaopproxy.java:213) ~[spring-aop-4.3.4.release.jar:4.3.4.release] internal @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[?:1.8.0_25] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[?:1.8.0_25] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_25] @ java.lang.reflect.method.invoke(method.java:483) ~[?:1.8.0_25] when using globalfilteraspect
@aspect public class globalfilteraspect { public static final string our_filter = "ourfilter"; @pointcut("execution(* org.hibernate.sessionfactory.getcurrentsession(..))") public void hibernatesessionfetch(){} @afterreturning(pointcut = "hibernatesessionfetch()", returning = "result") public void enableglobalfilter(joinpoint joinpoint, object result){ session session = (session) result; session.enablefilter(our_filter); } } in our config using
@enabletransactionmanagement(order = 200) @configuration @enableaspectjautoproxy ... if disable globalfilteraspect or using older hibernate/spring version works expected.
any ideas why intercepting "sessionfactory.getcurrentsession" breaks transaction?
Comments
Post a Comment