簡単な答え:registerStoredProcedureParameter()
への2回の呼び出しの順序を逆にします :
storedProcedure.registerStoredProcedureParameter(1, Object.class, ParameterMode.REF_CURSOR);
storedProcedure.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
長い答え:Postgress呼び出し可能ステートメントサポートのHibernateソースコード
、および各registerStoredProcedureParameter()
呼び出しにより、 ParameterRegistrationImplementor
リストに追加されて渡されるインスタンス。このクラスは、リスト内の位置とは関係なく、パラメーターの位置を格納することに注意してください。
後で、このリストは分析済み
REF_CURSOR
パラメータは最初の行になり、REF_CURSOR
の場合はエラーメッセージをスローします パラメータが最初ではありません。パラメータ番号に関係なく 。
物事を行うための非常に明るい方法(IMHO)ではありませんが、少なくとも回避策は簡単です。呼び出しの順序を入れ替えれば、問題はないはずです。