Ich schreibe eine einfache Webanwendung, um eine gespeicherte Prozedur aufzurufen und einige Daten abzurufen. Es ist eine sehr einfache Anwendung, die mit der Datenbank des Kunden interagiert. Wir übergeben die Mitarbeiter- und Firmen-ID und die gespeicherte Prozedur gibt die Mitarbeiterdaten zurück.
Die Webanwendung kann keine Daten aktualisieren / löschen und verwendet SQL Server.
Ich stelle meine Webanwendung in Jboss AS bereit. Soll ich JPA verwenden, um auf die gespeicherte Prozedur zuzugreifen oder CallableStatement
. Jeder Vorteil der Verwendung von JPA in diesem Fall.
Wie lautet auch die SQL-Anweisung zum Aufrufen dieser gespeicherten Prozedur? Ich habe noch nie gespeicherte Prozeduren verwendet und habe Probleme mit dieser. Google war keine große Hilfe.
Hier ist die gespeicherte Prozedur:
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
Aktualisieren:
Für alle anderen, die Probleme beim Aufrufen der gespeicherten Prozedur mit JPA haben .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Dinge, die mir aufgefallen sind:
- Parameternamen haben bei mir nicht funktioniert, versuchen Sie also, den Parameterindex zu verwenden.
- Korrigieren Sie die SQL-Anweisung
{call sp_name(?,?)}
anstelle voncall sp_name(?,?)
- Wenn die gespeicherte Prozedur eine Ergebnismenge
getSingleResult
zurückgibt, funktioniert dies nicht , selbst wenn Sie nur eine Zeile kennen - Übergeben Sie einen
resultSetMapping
Namen oder Details zur Ergebnisklasse