Hi,
I am writing a simple web application to call a stored procedure and retrieve some data. Its a very simple application, which interacts with client's database. We pass employee id and company id and the stored procedure will return employee details.
Web application cannot update/delete data and is using SQL Server.
I am deploying my web application in Jboss AS. Should I use JPA to access the stored procedure or CallableStatement. Any advantage of using JPA in this case.
Also what will be the sql statement to call this stored procedure. I have never used stored procedures before and I am struggling with this one. Google was not much of a help.
Here is the stored procedure:
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
Update:
For anyone else having problem calling stored procedure using JPA.
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Things I have noticed:
- parameter names didn't work for me, so try using parameter index.
- correct sql statement "{call sp_name(?,?)}" instead of "call sp_name(?,?)"
- If stored procedure is returning a result set, even if you know with only one row, getSingleResult wont work
- pass a resultSetMapping name or result class details