开发者社区> 问答> 正文

阿里新服务--seata问题,求解决~~~~~~~~

在使用框架的时候遇到了如下错误:com.alibaba.druid.sql.ast.expr.SQLInListExpr cannot be cast to com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr。是在使用批量操作时遇到的,请问该怎么解决呢?不使用批量操作就不会报错。
sql如下所示:

update csp_sys_attachement
<trim prefix="set" suffixOverrides=",">
    <if test="null!=param.bizTable">
        BIZTABLE=#{param.bizTable},
    </if>
    <if test="null!=param.bizId">
        BIZID=#{param.bizId},
    </if>
</trim>
where ID in
<foreach collection="param.list" index="index" item="item"
         separator="," open="(" close=")">
    #{item,jdbcType=VARCHAR}
</foreach>

日志如下所示:
Cause:
java.sql.SQLException: java.lang.ClassCastException: com.alibaba.druid.sql.ast.expr.SQLInListExpr cannot be cast to com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr
; uncategorized SQLException; SQL state [null]; error code [0]; java.lang.ClassCastException: com.alibaba.druid.sql.ast.expr.SQLInListExpr cannot be cast to com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr; nested exception is java.sql.SQLException: java.lang.ClassCastException: com.alibaba.druid.sql.ast.expr.SQLInListExpr cannot be cast to com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy130.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:69)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61)
at com.sun.proxy.$Proxy149.batchUpdate(Unknown Source)
at io.tongchain.csp.provider.impl.sys.SysAttachementProviderImpl.batchUpdate(SysAttachementProviderImpl.java:42)
at io.tongchain.csp.provider.impl.sys.SysAttachementProviderImpl

89a3a24b.invoke()

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at io.tongchain.csp.provider.impl.sys.SysAttachementProviderImpl

902b0ad7.batchUpdate()

at org.apache.dubbo.common.bytecode.Wrapper8.invokeMethod(Wrapper8.java)
at org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:47)
at org.apache.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:86)
at org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:56)
at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
at io.seata.integration.dubbo.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:60)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:63)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:88)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:54)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:80)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:79)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:137)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:39)
at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:73)
at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:128)
at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:103)
at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:200)
at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51)
at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

展开
收起
游客o5dab6ysbdr6g 2019-05-07 15:03:25 5372 0
1 条回答
写回答
取消 提交回答
  • 解决分布式事务问题,有两个设计初衷

    对业务无侵入:即减少技术架构上的微服务化所带来的分布式事务问题对业务的侵入
    高性能:减少分布式事务解决方案所带来的性能消耗
    seata中有两种分布式事务实现方案,AT及TCC

    AT模式主要关注多 DB 访问的数据一致性,当然也包括多服务下的多 DB 数据访问一致性问题
    TCC 模式主要关注业务拆分,在按照业务横向扩展资源时,解决微服务间调用的一致性问题

    2019-07-17 23:34:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
在 Spring 生态中玩转 RocketMQ 立即下载
云上Docker的Spring Cloud的微服务应用实践分 立即下载