【发布时间】:2019-02-26 07:59:21
【问题描述】:
首先....我有一个这样的 postgres 函数:
CREATE OR REPLACE FUNCTION auth.MyFunction (
platform autorizacion.e_tipo_plataforma, //Enum Type
pAppId varchar,
pVersion integer
)
当e_tipo_plataforma 是:
CREATE TYPE autorizacion.e_tipo_plataforma AS ENUM (
'Web', 'Escritorio', 'Movil', 'Servicio');
您可以看到调用该函数的参数是Enum Type (e_tipo_plataforma)
我正在尝试将此 EnumType 发送到 Postgres CallableStatement:
String query="{call auth.MyFunction(?,?,?)}";
CallableStatement ps=conn.prepareCall(funcionLlamar);
第一个意图:ps.setObject("p_tipo_plataforma", usuario.tipoPlataforma);
错误:
java.sql.SQLFeatureNotSupportedException:方法 org.postgresql.jdbc.PgCallableStatement.setObject(String,Object) 是 尚未实施。
第二个意图:ps.setObject(1, usuario.tipoPlataforma.name());
错误:
function auth.MyFunction(字符变化,字符变化, 整数)不存在
更新:
第三个意图:ps.setObject(1, usuario.tipoPlataforma);
错误:
无法推断用于实例的 SQL 类型 enumerator.TipoPlataforma。使用 setObject() 使用明确的 Types 值来指定要使用的类型。
问题是,如果 postgres 中的函数只接受这种类型,如何发送 EnumType 作为参数?
【问题讨论】:
标签: java postgresql enums enumerable