相关疑难解决方法(0)

从Java/JPA调用存储过程

我正在编写一个简单的Web应用程序来调用存储过程并检索一些数据.它是一个非常简单的应用程序,它与客户端的数据库进行交互.我们传递员工ID和公司ID,存储过程将返回员工详细信息.

Web应用程序无法更新/删除数据并且正在使用SQL Server.

我正在Jboss AS中部署我的Web应用程序.我应该使用JPA来访问存储过程或CallableStatement.在这种情况下使用JPA的任何优点.

另外,调用此存储过程的sql语句是什么.我之前从未使用过存储过程,而且我正在努力解决这个问题.谷歌没有多大帮助.

这是存储过程:

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
Run Code Online (Sandbox Code Playgroud)

更新:

对于其他任何使用JPA调用存储过程的问题.

Query query = em.createNativeQuery("{call getEmployeeDetails(?,?)}",
                                   EmployeeDetails.class)           
                                   .setParameter(1, employeeId)
                                   .setParameter(2, companyId);

List<EmployeeDetails> result = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

我注意到的事情:

  1. 参数名称对我不起作用,因此请尝试使用参数索引.
  2. 更正sql语句{call sp_name(?,?)}而不是 call sp_name(?,?)
  3. 如果存储过程返回结果集,即使您只知道一行,也getSingleResult不会工作
  4. 传递resultSetMapping名称或结果类详细信息

java sql jboss stored-procedures jpa

91
推荐指数
8
解决办法
24万
查看次数

标签 统计

java ×1

jboss ×1

jpa ×1

sql ×1

stored-procedures ×1