Sto scrivendo una semplice applicazione web per chiamare una stored procedure e recuperare alcuni dati. È un'applicazione molto semplice, che interagisce con il database del cliente. Passiamo l'ID del dipendente e l'ID dell'azienda e la procedura memorizzata restituirà i dettagli del dipendente.
L'applicazione Web non può aggiornare / eliminare i dati e utilizza SQL Server.
Sto distribuendo la mia applicazione web in Jboss AS. Devo usare JPA per accedere alla stored procedure o CallableStatement
. Qualsiasi vantaggio nell'usare JPA in questo caso.
Inoltre, quale sarà l'istruzione sql per chiamare questa stored procedure. Non ho mai utilizzato procedure memorizzate prima e sto lottando con questo. Google non è stato di grande aiuto.
Ecco la procedura memorizzata:
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
Aggiornare:
Per chiunque altro abbia problemi a chiamare la procedura memorizzata utilizzando JPA .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Cose che ho notato:
- I nomi dei parametri non hanno funzionato per me, quindi prova a utilizzare l'indice dei parametri.
- Correggere l'istruzione sql
{call sp_name(?,?)}
invece dicall sp_name(?,?)
- Se la stored procedure restituisce un set di risultati, anche se sai con una sola riga,
getSingleResult
non funzionerà - Passa un
resultSetMapping
nome o dettagli sulla classe di risultati