zoukankan      html  css  js  c++  java
  • No ongoing transaction. Did you forget to call multi?

    2016-10-21 14:41:47,551 [ERROR] [http-nio-8032-exec-2] TransactionSynchronizationUtils:171 - TransactionSynchronization.afterCompletion threw exception
    org.springframework.dao.InvalidDataAccessApiUsageException: No ongoing transaction. Did you forget to call multi?
    at org.springframework.data.redis.connection.jedis.JedisConnection.exec(JedisConnection.java:756)
    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:497)
    at org.springframework.data.redis.core.RedisConnectionUtils$ConnectionSplittingInterceptor.invoke(RedisConnectionUtils.java:357)
    at org.springframework.data.redis.core.RedisConnectionUtils$ConnectionSplittingInterceptor.intercept(RedisConnectionUtils.java:335)
    at org.springframework.data.redis.core.RedisConnectionUtils$ConnectionSplittingInterceptor.invoke(RedisConnectionUtils.java:365)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy264.exec(Unknown Source)
    at org.springframework.data.redis.core.RedisConnectionUtils$RedisTransactionSynchronizer.afterCompletion(RedisConnectionUtils.java:290)
    at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:168)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:1001)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:976)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:806)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy127.getList(Unknown Source)

        /**
         * Actually invoke the {@code afterCompletion} methods of the
         * given Spring TransactionSynchronization objects.
         * @param synchronizations List of TransactionSynchronization objects
         * @param completionStatus the completion status according to the
         * constants in the TransactionSynchronization interface
         * @see TransactionSynchronization#afterCompletion(int)
         * @see TransactionSynchronization#STATUS_COMMITTED
         * @see TransactionSynchronization#STATUS_ROLLED_BACK
         * @see TransactionSynchronization#STATUS_UNKNOWN
         */
        public static void invokeAfterCompletion(List<TransactionSynchronization> synchronizations, int completionStatus) {
            if (synchronizations != null) {
                for (TransactionSynchronization synchronization : synchronizations) {
                    try {
                        synchronization.afterCompletion(completionStatus);
                    }
                    catch (Throwable tsex) {
                        logger.error("TransactionSynchronization.afterCompletion threw exception", tsex);
                    }
                }
            }
        }
  • 相关阅读:
    自动化测试-短信验证码处理
    使用HttpClient调用WebAPI接口,含WebAPI端示例
    C#使用HttpClient上传文件并附带其他参数
    WebClient和HttpClient, 以及webapi上传图片
    C#-微信公众平台接口-上传临时素材
    字节组数(二进制流)、Base64、图片(文件)、二进制相互之间转换
    理解并设计rest/restful风格接口
    使用RESTful风格开发
    GitHub OAuth 第三方登录示例教程
    OAuth 2.0 的四种方式
  • 原文地址:https://www.cnblogs.com/softidea/p/5984591.html
Copyright © 2011-2022 走看看