J'écris une application Web simple pour appeler une procédure stockée et récupérer des données. C'est une application très simple, qui interagit avec la base de données du client. Nous transmettons l'identifiant de l'employé et l'identifiant de l'entreprise et la procédure stockée renverra les détails de l'employé.
L'application Web ne peut pas mettre à jour / supprimer les données et utilise SQL Server.
Je déploie mon application Web dans Jboss AS. Dois-je utiliser JPA pour accéder à la procédure stockée ou CallableStatement
. Tout avantage de l'utilisation de JPA dans ce cas.
Quelle sera également l'instruction sql pour appeler cette procédure stockée. Je n'ai jamais utilisé de procédures stockées auparavant et j'ai du mal avec celle-ci. Google n'a pas été d'une grande aide.
Voici la procédure stockée:
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
Mettre à jour:
Pour toute personne ayant des problèmes pour appeler une procédure stockée à l'aide de JPA .
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
EmployeeDetails.class)
.setParameter(1, employeeId)
.setParameter(2, companyId);
List<EmployeeDetails> result = query.getResultList();
Choses que j'ai remarquées:
- Les noms de paramètres ne fonctionnaient pas pour moi, alors essayez d'utiliser l'index des paramètres.
- Corriger l'instruction SQL
{call sp_name(?,?)}
au lieu decall sp_name(?,?)
- Si la procédure stockée renvoie un jeu de résultats, même si vous savez avec une seule ligne,
getSingleResult
ne fonctionnera pas - Passer un
resultSetMapping
nom ou des détails de classe de résultat