Я пишу просту веб-програму для виклику збереженої процедури та отримання деяких даних. Це дуже просте додаток, яке взаємодіє з базою даних клієнта. Ми передаємо ідентифікатор співробітника та ідентифікатор компанії, і збережена процедура поверне реквізити працівника
Веб-додаток не може оновлювати / видаляти дані та використовує SQL Server.
Я розгортаю свій веб-додаток в Jboss AS. Чи слід використовувати JPA для доступу до збереженої процедури або CallableStatement
. Будь-яка перевага використання JPA в цьому випадку.
Також те, що буде оператором sql, щоб викликати цю збережену процедуру. Я ніколи раніше не використовував збережені процедури, і я борюся з цією. Google не дуже допомагав.
Ось збережена процедура:
CREATE procedure getEmployeeDetails (@employeeId int, @companyId int)
as
begin
select firstName,
lastName,
gender,
address
from employee et
where et.employeeId = @employeeId
and et.companyId = @companyId
end
Оновлення:
Для всіх, хто має проблеми з викликом збереженої процедури за допомогою JPA .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Що я помітив:
- Імена параметрів для мене не спрацювали, тому спробуйте скористатися індексом параметра.
- Правильний оператор sql
{call sp_name(?,?)}
замістьcall sp_name(?,?)
- Якщо збережена процедура повертає набір результатів, навіть якщо ви знаєте лише один рядок,
getSingleResult
робота не буде - Передайте
resultSetMapping
ім'я або дані про клас результатів