как вызвать хранимую процедуру с помощью Spring и Hibernate - PullRequest
0 голосов
/ 30 июня 2010

Я получаю сообщение об ошибке: java.lang.reflect.UndeclaredThrowableException и неверное имя столбца.Можете ли вы помочь мне, почему я получаю эту ошибку.

1 Ответ

0 голосов
/ 30 июня 2010

Предлагаю следовать рекомендации документации:

16.2.2.1. Правила / ограничения для использования хранимых процедур

Вы не можете использовать хранимые процедуры с 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 в вашей процедуре, это, вероятно, будет более эффективным, но это не требование.

Как только ваш код будет приведен в соответствие с правилами, если вы все еще получаете ошибку, пожалуйста, предоставьте полное сообщение об ошибке.

...