【问题标题】:Stored Procedures with spring data jpa带有弹簧数据 jpa 的存储过程
【发布时间】:2015-06-29 13:19:16
【问题描述】:

在 Oracle 中有一个存储过程,我需要使用 Spring Data JPA 从 Java 中的服务调用它。

在sql developer中测试了该过程,发现运行正常。它需要大约 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 ....

这里前两个参数是screen中的必填字段,所以肯定是有价值的。但其他字段是可选的。

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);

我尝试将返回类型指定为 List 和 List。但没有任何结果。

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

我得到的错误如下

我试过this,但没有成功。

【问题讨论】:

  • 请贴出你试过的代码和错误
  • 使用错误和 Spring 数据存储库调用编辑
  • @AnithaRamaiah 你应该粘贴完整的堆栈跟踪。目前还不清楚是什么导致了异常。
  • 另外,请提供@NamedStoredProcedureQuery...

标签: spring-data


【解决方案1】:

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;

使用 StoredProcedureQuery 从 Java 调用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2016-07-09
    • 1970-01-01
    • 2017-07-06
    • 2020-11-11
    相关资源
    最近更新 更多