在hibernate Query对象中设置数组参数

时间:2017-05-11 11:52:00

标签: java postgresql hibernate jdbc

这就是我的plpqsql函数(Postgres函数)的样子

CREATE OR REPLACE FUNCTION public.test(my_ids text[]) RETURNS void
LANGUAGE plpgsql AS $function$
BEGIN
  RAISE NOTICE '--- Processing data%', my_ids;
END;
$function$;

并执行上述功能

SELECT test('{"This", "is", "very", "cool"}'::TEXT[]); 

直到这里我的代码工作正常,但当我试图从我的应用程序的代码中调用此选择查询时,我不知道如何在查询中设置它。 下面是我的java代码

String query = "SELECT public.test( ? );";
SQLQuery sqlQuery = session.createSQLQuery(query);

List<String> strList = new ArrayList<>();
strList.add("hello");
strList.add("world");
String[] strParam = strList.toArray(new String[strList.size()]);
sqlQuery.setParameter(1, strParam);  // this is not working what shall i use for it ?
sqlQuery.executeUpdate();

所以我在代码注释中提到的问题是我如何在查询中设置这个数组。

我可以在JDBC中使用它

Array strParam= conn.createArrayOf("varchar", strList.toArray(new String[strList.size()]));

然后使用setArray方法在preparedStatement中设置此sqlArray!

但是我知道如何用hibernate做这件事?

感谢您的期待!

0 个答案:

没有答案