Hibernate: 5.4.0.Final
PostgreSql: 9.6.6 (It would be an option to upgrade to latest version)
У меня есть таблицы A
, B
и C
. И следующая функция postgresql:
CREATE OR REPLACE FUNCTION myFunction(param1 "A"[], param2 "B") RETURNS SETOF "C" AS $$
BEGIN
......
END;
$$ LANGUAGE plpgsql;
Итак, я хочу передать массив записей из таблицы A
и одну запись B
. В результате я хочу получить список записей из таблицы C
. Я хочу вызвать эту функцию из спящего режима. Обратите внимание, что переданные сущности из таблицы A
не являются постоянными, поэтому нельзя передавать массив идентификаторов. Вместо этого я хочу передать целые (не постоянные) сущности.
Мой текущий код гибернации выглядит следующим образом:
ProcedureCall call = session.createStoredProcedureCall("myFunction");
call.registerParameter(1, <Type?>, ParameterMode.IN).bindValue(listOfEntities);
call.registerParameter(2, EntityForTableB.class, ParameterMode.IN).bindValue(entityForTableB);
((ResultSetOutput)call.getOutputs().getCurrent()).getResultList();
Я не могу определить правильный способ передачи параметров функции. В настоящее время я получаю эту ошибку:
org.postgresql.util.PSQLException: ERROR: Function myFunction(bytea, bytea) does not exist
Каким будет правильный способ справиться с этим? Я нашел решения, в которых сущности преобразуются в формат json, но это выглядело сложно. Буду признателен за любые советы.