2015-06-29 86 views
1

在Oracle中有一个存储过程,我需要使用Spring Data JPA从Java服务调用存储过程。弹簧数据存储过程jpa

在sql开发人员测试过程中发现工作正常。它需要6个IN参数并返回一个ref_cursor。

请帮我知道如何执行此操作。

的过程:

create or replace PROCEDURE GET_CONF(PROD_NAME IN VARCHAR2, DERIVATIVE IN VARCHAR2, PHY_SEC_SIZE IN VARCHAR2, PROD_CACH IN VARCHAR2, CAPACITY IN VARCHAR2,ENC_TYPE IN VARCHAR2, INTER_VAL IN VARCHAR2, HEADS IN VARCHAR2,DISCS IN VARCHAR2, AREALDENSITY IN VARCHAR2, DESIGNSITE IN VARCHAR2, RSLT OUT SYS_REFCURSOR) AS .... 

这里的前两个参数是在屏幕必填字段,所以肯定它的价值。但其他字段是可选的。

Spring的数据仓库方法如下:

@Procedure(procedureName = "get_conf") 
List<Object[]> testjpa(String prodName, String derivative, String phySize, 
     String prodCache, String capacity, String encType, 
     String interfaceVal, String heads, String discs, 
     String arealDensity, String desingSite); 

我试图给返回类型列表和目录。但没有解决。

如果我只返回一个值,一切正常。问题出现在我返回多个值和多行时。

,我得到的错误是如下 enter image description here

我试过this,但没有运气。

+0

请张贴您尝试了代码和错误 – ArunM

+0

,错误和Spring数据存储库调用 –

+1

@AnithaRamaiah编辑你应该粘贴完整的堆栈跟踪。目前还不清楚是什么导致了例外。 –

回答

0

Oracle函数

PROCEDURE p_get_region_cur (v_out_cur OUT SYS_REFCURSOR) 
AS 
BEGIN 
     OPEN v_out_cur FOR SELECT region_id, region_name FROM regions; 
END; 

从Java调用使用StoredProcedureQuery

StoredProcedureQuery query = entityManager.createStoredProcedureQuery("p_get_region_cur", Region.class); 
    query.registerStoredProcedureParameter(1, void.class, ParameterMode.REF_CURSOR); 
    List<Region> result = query.getResultList();