问题描述
我尝试从JPA / Hibernate环境中将整数数组值传递给plpgsql存储过程。但我总是得到执行: fn_test_array(bytea)函数不存在。
我写了一个简短的演示应用程序,演示了该问题。 (Wildfly AS,JPA / Hibernate,PostgreSQL 12)
是的,我知道int []。class是垃圾,但是解决方案是什么? :)
存储过程:
CREATE OR REPLACE FUNCTION public.fn_test_array(in_arr integer[],OUT res_int bigint)
RETURNS bigint
LANGUAGE plpgsql
AS $function$
BEGIN
res_int := 201;
END;
$function$
;
从Java调用:
StoredProcedureQuery query2 = em.createStoredProcedureQuery("fn_test_array")
.registerStoredProcedureParameter("in_arr",int[].class,ParameterMode.IN)
.registerStoredProcedureParameter("res_int",Long.class,ParameterMode.OUT)
.setParameter("in_arr",new int[]{1,2});
query2.execute();
Long res2 = (Long) query2.getOutputParameterValue("res_int");
System.out.println("res2: " + res2);
例外:
11:26:11,933 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-19) SQL Error: 0,SQLState: 42883
11:26:11,933 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-19) ERROR: function fn_test_array(bytea) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 15
预先感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)