Предлагаю следовать рекомендации документации:
Вы не можете использовать хранимые процедуры с
Hibernate, если вы не следуете некоторым
правила процедуры / функции. Если они делают
не следовать этим правилам, они не
можно использовать с Hibernate. Если ты еще
хотите использовать эти процедуры у вас есть
выполнить их через
session.connection()
. Правила
отличается для каждой базы данных, так как
поставщики базы данных имеют разные хранятся
семантика / синтаксис процедуры.
Запросы хранимых процедур не могут быть
разбит на страницы с
setFirstResult()/setMaxResults()
.
Рекомендуемая форма звонка стандартная
SQL92: { ? = call
functionName(<parameters>) }
или { ? =
call procedureName(<parameters>}
.
Собственный синтаксис вызова не поддерживается.
Для Oracle применяются следующие правила:
- Функция должна возвращать набор результатов. Первый параметр
процедура должна быть OUT, которая возвращает
набор результатов. Это делается с помощью
SYS_REFCURSOR
введите в Oracle 9 или 10.
В Oracle вам нужно определить тип REF
CURSOR
. Смотрите литературу по Oracle для
дополнительная информация.
Для сервера Sybase или MS SQL
применяются следующие правила:
- Процедура должна возвращать набор результатов. Обратите внимание, что так как они
серверы могут возвращать несколько результатов
устанавливает и обновляет счетчики, Hibernate будет
повторить результаты и взять первый
результат, который является набором результатов в качестве его
возвращаемое значение Все остальное будет
отбрасываются.
- Если вы можете включить
SET NOCOUNT ON
в вашей процедуре, это, вероятно, будет
более эффективным, но это не
требование.
Как только ваш код будет приведен в соответствие с правилами, если вы все еще получаете ошибку, пожалуйста, предоставьте полное сообщение об ошибке.