zoukankan      html  css  js  c++  java
  • Greenplum+mybatis问题解析

    1. 问题描述

    同事团队在使用springboot+mybatis+Greenplum时,发现通过mybatis数据查询正常,但是执行insert和update执行会报“Cause: org.postgresql.util.PSQLException: ERROR: The RETURNING clause of the INSERT statement is not supported in this version of Greenplum Database.”。

    而我们团队使用Greenplum的模式是:晚上通过spark跑批入库Greenplum,平台只使用了Greenplum的查询功能,未使用Mybatis进行插入操作。

    2. 解决方案

    2.1 问题定位

    首先创建同样格式的test表,验证jdbc方式是否可行,验证后,发现jdbc能正常插入,认为问题可能出在mybtis或者postgre/greeenplum版本问题上。

    2.2 定位结论

    经过多次验证,发现问题出在:

    Mybatis3默认在插入或者更新数据后,会返回影响行数( int insert(trorgvehiclviewtest record);),但是Greenplum是基于postgresql8.2开发的,postgresql8.2不支持返回这个特性导致的。

    2.3 解决方案

    ​ 通过在insert/update语句后面,增加statementType参数可以解决该问题,statementType参数设置为"CALLABLE" 就能正常使用。

    ​ 示例:

        <insert id="insert" parameterType="com.laowang.Test" statementType="CALLABLE">
        </insert>
    

    ​ 取值说明:

    1、STATEMENT:直接操作sql,不进行预编译,获取数据:$—Statement

    2、PREPARED:预处理,参数,进行预编译,获取数据:#—–PreparedStatement:默认

    3、CALLABLE:执行存储过程————CallableStatement


  • 相关阅读:
    Android在onCreate()中获得控件尺寸
    Java根据出生年月日获取到当前日期的年月日
    Oracle 取随机数
    filter,orderBy等过滤器
    ng-repeat 指令
    三元表达式、逻辑表达式 与 &&、||的妙用
    ng-switch 指令
    sublime text 3.0 安装 HTML-CSS-JS Prettify
    JS相关环境搭建:Nodejs、karma测试框架、jsDuck、Express
    关于VSS上的项目源码管理的注意问题
  • 原文地址:https://www.cnblogs.com/ruanjianlaowang/p/11182504.html
Copyright © 2011-2022 走看看