У меня есть функция в PostgreSQL, которая загружает некоторые объекты и возвращает курсор:
create function load()
returns refcursor
language plpgsql
...
Как вызвать ее с помощью Hibernate? Я пытаюсь использовать именованный запрос гибернации:
<sql-query name="loadEntities" callable="true">
<return class="com.test.MyEntity"/>
<![CDATA[
{ ?= call loadEntities() }
]]>
</sql-query>
java:
this.getSession().getNamedQuery("loadEntities").list();
, но получаю сообщение об ошибке:
org.postgresql.util.PSQLException: This statement does not declare an OUT parameter. Use { ?= call ... } to declare one.
Я могу использовать select
для вызова функции:
<sql-query name="loadEntities">
<return class="com.test.MyEntity"/>
<![CDATA[
select loadEntities()
]]>
</sql-query>
, но тогда у меня есть:
org.postgresql.util.PSQLException: The column name id was not found in this ResultSet.
(потому что выбор возвращает имя курсора вместо столбцов данных).