Hibernate: передать массив сущностей в функцию PostgreSql - PullRequest
0 голосов
/ 24 января 2019
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, но это выглядело сложно. Буду признателен за любые советы.

...