Hibernate JPA 存储过程调用?

Posted

技术标签:

【中文标题】Hibernate JPA 存储过程调用?【英文标题】:Hibernate JPA stored procedure call? 【发布时间】:2014-10-15 11:26:53 【问题描述】:

我正在使用 Hibernate JPA。我有以下 Oracle 存储过程。

CREATEORREPLACEPROCEDURE PROC_AB
(
      in_name VARCHAR2,
      in_lastname VARCHAR2,
      out_emp_id OUTINTEGER
)

如何调用这个存储过程?

【问题讨论】:

【参考方案1】:

查看this SO question:

    首先你定义一个名为native query的存储过程:

    @javax.persistence.NamedNativeQuery(name = "call_proc_ab", query = " call PROC_AB(:cmpid,:status,?) ", resultClass = Long.class, hints = 
    @javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") )
    

    然后你使用:

    TypedQuery<Long> query = entityManager.createNamedQuery("call_proc_ab", Long.class); 
    query.setParameter("cmpid",cmpid); 
    query.setParameter("status",status); 
    Long empId = query.getSingleResult(); 
    

【讨论】:

感谢您的回复。我应该在哪里放置名为本机查询的存储过程?我的意思是在 XML 文件中? 查看SO question

以上是关于Hibernate JPA 存储过程调用?的主要内容,如果未能解决你的问题,请参考以下文章

不能用Hibernate调用PostgreSQL的11个存储过程

使用 JPA 2.1 / Hibernate 4 将值列表传递给存储过程

使用 Spring JPA 调用存储过程

Spring Data JPA调用存储过程实例

JPA 2.1在sql server中调用存储过程

JPA用参数调用存储过程