标签:注册 ref com pre href gis 组元 arch ons
想要使用JPA调用存储过程,需要使用JPA2.1以上,API详情点击 此处
数据库使用 Oracle12
JPA实现为 Hibernate
create or replace procedure
findPerson(param in string, cur_search_result out sys_refcursor)
as
begin
open cur_search_result for
select p.* from persons p where u.name like param;
end findPerson;
这是一个简单的存储过程,根据名字模糊匹配所有人员
注意:
@PersistenceContext
private EntityManager em;
JPA定义存储过程有两种方式:
此处使用第2种方式,直接使用EntityManager进行自定义:
StoredProcedureQuery procedureQuery = em.createStoredProcedureQuery("findPerson");
procedureQuery.registerStoredProcedureParameter("param", String.class, ParameterMode.IN);
procedureQuery.registerStoredProcedureParameter("cur_search_result", Void.class, ParameterMode.REF_CURSOR);
调用存储过程,获取结果集:
procedureQuery.execute();
List searchRowList = procedureQuery.getResultList();
至此,就能使用JPA调用存储过程获取到多行数据,后续对Object[]的和实体类之间的转化,这里不再赘述
如果确实想要使用自动映射功能,请使用JPA定义存储过程的 第一种方式
使用JPA调用存储过程,返回存储多行数据的OUT参数(游标)
标签:注册 ref com pre href gis 组元 arch ons
原文地址:https://www.cnblogs.com/zhuang229/p/12227938.html