Вызов хранимой процедуры из Java / JPA
Я пишу простое веб-приложение для вызова хранимой процедуры и получения некоторых данных. Это очень простое приложение, которое взаимодействует с базой данных клиента. Мы передаем идентификатор сотрудника и идентификатор компании, и хранимая процедура возвращает данные сотрудника.
Веб-приложение не может обновлять / удалять данные и использует SQL Server.
Я развертываю свое веб-приложение в Jboss AS. Должен ли я использовать JPA для доступа к хранимой процедуре илиCallableStatement
, Любое преимущество использования JPA в этом случае.
Также, что будет оператором sql для вызова этой хранимой процедуры. Я никогда не использовал хранимые процедуры раньше, и я борюсь с этим. Гугл не сильно помог.
Вот хранимая процедура:
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
детали имени или класса результата