Estoy escribiendo una aplicación web simple para llamar a un procedimiento almacenado y recuperar algunos datos. Es una aplicación muy simple, que interactúa con la base de datos del cliente. Pasamos la identificación del empleado y la identificación de la empresa y el procedimiento almacenado devolverá los detalles del empleado.
La aplicación web no puede actualizar / eliminar datos y está usando SQL Server.
Estoy implementando mi aplicación web en Jboss AS. ¿Debo usar JPA para acceder al procedimiento almacenado o CallableStatement
. Cualquier ventaja de usar JPA en este caso.
Además, ¿cuál será la instrucción SQL para llamar a este procedimiento almacenado? Nunca antes había usado procedimientos almacenados y estoy luchando con este. Google no fue de mucha ayuda.
Aquí está el procedimiento almacenado:
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
Actualizar:
Para cualquier otra persona que tenga problemas para llamar al procedimiento almacenado usando JPA .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Cosas que he notado:
- Los nombres de los parámetros no me funcionaron, así que intente usar el índice de parámetros.
- Corregir la declaración de SQL en
{call sp_name(?,?)}
lugar decall sp_name(?,?)
- Si el procedimiento almacenado devuelve un conjunto de resultados, incluso si sabe que solo tiene una fila,
getSingleResult
no funcionará - Pasar un
resultSetMapping
nombre o detalles de la clase de resultado