【发布时间】:2023-03-28 11:37:01
【问题描述】:
有人能告诉我如何使用EclipseLink (jpa 2.1) 将数组参数传递给postgresql 函数吗?
我尝试了以下但得到错误:
例外
org.postgresql.util.PSQLException:无法推断要用于的 SQL 类型 [Ljava.lang.Integer; 的一个实例。将 setObject() 与显式一起使用 类型值以指定要使用的类型。
Integer[] propertyRowIndexArr = new Integer[]{1005, 1006, 1007};
StoredProcedureQuery query1 = myEntityManager.createStoredProcedureQuery("func_testArr");
query1.registerStoredProcedureParameter("itemdetailid", Integer[].class, ParameterMode.IN);
query1.setParameter("itemdetailid", propertyRowIndexArr);
CREATE OR REPLACE FUNCTION func_testArr(categoryid integer[])
RETURNS setof category AS
$BODY$
DECLARE r category%rowtype;
BEGIN
FOR r IN select * from category c where c.categoryid = any($1)
LOOP
RETURN NEXT r;
END LOOP;
END;
谢谢
【问题讨论】:
-
感谢@ankur,链接已满。
-
这是否解决了您的问题,那么我应该将其发布为您接受的答案
-
是的。它给了我一个想法。我没有将数组传递给函数,而是传递了一个字符串并用逗号分隔整数。然后,我在函数内部使用 string_to_array 将字符串拆分为一个数组。谢谢,
-
已发布答案供您接受
标签: java hibernate postgresql jpa eclipselink