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个存储过程