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呼び出しでこれを取得する理由がわかりませんか? 誰かがそれを解決するのを手伝ってくれませんか?