1

JPAを使用してOracleストアドプロシージャを呼び出していますが、以下の例外が発生しています

エラー

[4/24/14 9:07:37:583 EDT] 00000031 SystemOut O [EL Warning]: 2014-04-24 09:07:37.452--UnitOfWork(1697919964)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'STP_REFRESH_CATEGORY_GUARANTEE'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Error Code: 6550
Call: BEGIN STP_REFRESH_CATEGORY_GUARANTEE(SHIP_CODE=>?, SAIL_DATE=>?, return_code=>?); END;
    bind => [3 parameters bound]
Query: DataReadQuery(name="refreshCategoryGuarantee" )
[4/24/14 9:07:37:584 EDT] 00000031 SystemOut                                                    O         **********************************************************************************
[4/24/14 9:07:37:584 EDT] 00000031 SystemOut                                                    O EXCEPTION: Exception       [EclipseLink-4002] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'STP_REFRESH_CATEGORY_GUARANTEE'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Error Code: 6550
Call: BEGIN STP_REFRESH_CATEGORY_GUARANTEE(SHIP_CODE=>?, SAIL_DATE=>?, return_code=>?); END;
    bind => [3 parameters bound]
Query: DataReadQuery(name="refreshCategoryGuarantee" ) ship_code: AL sail_date: 01-JUN-14

コード :

    試す{
                クエリ query = getEntityManager().createNamedQuery("refreshCategoryGuarantee");
                query.setParameter("SHIP_CODE", ship_code);
                query.setParameter("SAIL_DATE", DateUtil.getSqlDate(sailDate));
                return (整数) query.getSingleResult();
            }catch(例外例){
                System.out.println("************************************************ ****************************************");
                logger.error("param["+ship_code+","+sailDate+"] を使用した refreshCategoryGuarantee という名前のクエリの実行エラー ", ex);
                StoredProcedureConstants.RETURN_CODE_EXCEPTION を返します。
           }
    
Here, refreshCategoryGuarantee is named query of STP_REFRESH_CATEGORY_GUARANTEE procedures.

-------------
<pre>
@NamedStoredProcedureQuery(  
        name="refreshCategoryGuarantee",  
        procedureName="STP_REFRESH_CATEGORY_GUARANTEE",  
        returnsResultSet=false,  
        parameters={  
            @StoredProcedureParameter(queryParameter="SHIP_CODE", type=String.class),  
            @StoredProcedureParameter(queryParameter="SAIL_DATE", type=Date.class),  
            @StoredProcedureParameter(queryParameter="return_code", direction=Direction.OUT, type=Integer.class) 
        })

私の問題は、オラクルで以下の匿名ブロックを実行すると、問題なく動作することです

    サーバー出力をオンに設定
    宣言する
      rc番号;
    始める
      STP_REFRESH_CATEGORY_GUARANTEE('OA','24-jan-15',rc);
      dbms_output.put_line('応答コード:'||rc);
    終わり;

JPA呼び出しでこれを取得する理由がわかりませんか? 誰かがそれを解決するのを手伝ってくれませんか?

4

2 に答える 2