从Java / JPA调用存储过程
我正在编写一个简单的Web应用程序来调用存储过程并检索一些数据。它是一个非常简单的应用程序,它与客户端的数据库进行交互。我们传递员工ID和公司ID,存储过程将返回员工详细信息。
Web应用程序无法更新/删除数据并且正在使用SQL Server。
我正在Jboss AS中部署我的Web应用程序。我应该使用JPA来访问存储过程或CallableStatement
。在这种情况下使用JPA的任何优点。
另外,调用此存储过程的sql语句是什么。我之前从未使用过存储过程,而且我正在努力解决这个问题。谷歌没有多大帮助。
这是存储过程:
CREATE procedure getEmployeeDetails (@employeeId int, @companyId int)asbegin select firstName, lastName, gender, address from employee et where et.employeeId = @employeeId and et.companyId = @companyIdend
更新:
对于其他任何使用JPA调用存储过程的问题。
Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}", EmployeeDetails.class) .setParameter(1, employeeId) .setParameter(2, companyId);List<EmployeeDetails> result = query.getResultList();
我注意到的事情:
参数名称对我不起作用,因此请尝试使用参数索引。
更正sql语句{call sp_name(?,?)}
而不是 call sp_name(?,?)
如果存储过程返回结果集,即使您只知道一行,也getSingleResult
不会工作
传递resultSetMapping
名称或结果类详细信息
阿晨1998
相关分类