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" 就能正常使用。

​ 示例:

    
    

​ 取值说明:

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

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

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


I’m 「软件老王」,如果觉得还可以的话,关注下呗,后续更新秒知!欢迎讨论区、同名公众号留言交流!

你可能感兴趣的:(greenplum,greenplum专栏)