Результат из хранимой процедуры с использованием JPA / Hibernate - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь получить результат из хранимой процедуры с помощью Hibernate в EJB-сеансе без сохранения состояния.

Хранимая процедура выполняется в MS SQL Server 2008, принимает целое число в качестве параметра и возвращает другоеinteger.

Мне удалось вызвать процедуру, используя

Query q = em.createNativeQuery("name_of_my_procedure :param");
q.setParameter("param", sequence);
q.executeUpdate().

Использование getResultList или getSingleResult вместо executeUpdate, всегда приводит к смешному исключению.

В EJB 3.0 в действииЯ обнаружил это:

JPA не поддерживает хранимые процедуры, и вы должны зависеть от проприетарной функции вашего поставщика сохраняемости

Я нашел несколько сообщений, говорящих оиспользование CallableStatement через соединение SQL, но это решение выглядит неуместно.

Есть ли способ получить мой сгенерированный идентификатор с помощью Hibernate?

Спасибо.

Фред.

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

В конце концов я исправил ее с помощью другой хранимой процедуры.

Я создал новую хранимую процедуру, чтобы вызвать другую и сохранить результаты во временной таблице.Я сопоставил сущность с этой временной таблицей и теперь могу получить необходимую информацию.

Я знаю, что это не самый элегантный способ сделать это, но я не хотел смешивать / использовать код соединения SQL сКод JPA.

0 голосов
/ 15 марта 2012

Не является ответом на ваш вопрос как таковой, но FYI JPA 2.1 поддерживает (или будет поддерживать, если он будет выпущен) API хранимых процедур . Единственная реализация JPA, которая предоставляет этот AFAIK, - это DataNucleus JPA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...