StoredProcedureQuery с выходной таблицей записей - PullRequest
0 голосов
/ 04 октября 2019

в настоящее время выполняет хранимую процедуру с таблицей записей выходных параметров. возникла проблема при доступе к нему в 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?

1 Ответ

0 голосов
/ 17 октября 2019

После проверки Типы должны быть на уровне БД, а не на пакете. Для его обнаружения JDBC.

Я включаю JDBC, поскольку он обладает более мощным доступом к хранимым процедурам.

...