3

名前付きクエリを使用して定義されたプロシージャを呼び出す春のデータ リポジトリがあります。ストアド プロシージャには 2 つのパラメータがあり、最初のパラメータは ref_cursor で、2 番目のパラメータは in パラメータです。これはsp署名です:

create or replace procedure proc1(out_pos out sys_refcursor , pTrans_ID in Number) is  ............

また、これはエンティティの名前付きクエリ定義です。

@javax.persistence.NamedStoredProcedureQuery(name = "getProc", procedureName = "proc1",
        parameters ={
                @StoredProcedureParameter(name = "out_pos",mode = ParameterMode.REF_CURSOR,type = void.class),
                @StoredProcedureParameter(name = "pTrans_ID",mode = ParameterMode.IN,type = Long.class)
        }
)

これは、名前付きクエリを呼び出すリポジトリです。

public interface TempReportRepository extends SwiftRepository<TempReportEntity,Long> {
    @Procedure(name = "getProc")
    public Object[] getProc1(@Param("pTrans_ID") Long inParam1);


}

以下を呼び出すとgetProc1、例外が発生します:

Caused by: java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!
    at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:10093)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:5693)
    at org.hibernate.result.internal.OutputsImpl.<init>(OutputsImpl.java:69)
    ... 72 more
4

2 に答える 2