带输出记录表的StoredProcedureQuery

问题描述 投票:0回答:1

当前正在使用输出参数记录表来执行存储过程。在spring-jpa上访问它时遇到了麻烦。

已经尝试过ParameterMode.REF_CURSOR和ParameterMode.OUT,对于应该为显示结果列表显示的参数模式感到困惑。

我在下面收到此错误

javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults

Caused by: org.hibernate.exception.GenericJDBCException: Error calling CallableStatement.getMoreResults

Caused by: java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!

Oracle存储过程

procedure fetch_fund_values(
policy_num in varchar2,
fund_detail out table_fund_policy
);

TYPE record_fund_policy IS RECORD(
policy_num             VARCHAR2
,fund_id             VARCHAR2
,fund_price           NUMBER
);

TYPE table_fund_policy IS TABLE OF record_fund_policy;

spring jpa访问存储过程

try {
    StoredProcedureQuery storedProcedure = this.entityManager
            .createStoredProcedureQuery("fetch_fund_values")
            .registerStoredProcedureParameter("policy_num", String.class,
                    ParameterMode.IN)
            .registerStoredProcedureParameter("table_fund_policy",
                    void.class, ParameterMode.REF_CURSOR)
            .setParameter("policy_num", policyNumber);

    return storedProcedure.getResultList();
} catch (Exception ex) {
    ex.printStackTrace();
    throw ex;
}

我目前正在寻找可以访问结果列表的方式。我应该创建退货POJO吗?

jpa stored-procedures spring-data-jpa jpa-2.0 jpa-2.1
1个回答
0
投票

检查后,类型应该在数据库级别,而不在软件包级别。以便被JDBC发现。

由于启用了更强大的访问StoredProcedures,我打开了JDBC。

© www.soinside.com 2019 - 2024. All rights reserved.