Kort svar:Vänd ordningen på dina två samtal till registerStoredProcedureParameter()
:
storedProcedure.registerStoredProcedureParameter(1, Object.class, ParameterMode.REF_CURSOR);
storedProcedure.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
Långt svar:Jag grävde lite i Vila källkod för stöd för Postgress-uppringningsbara uttalanden
, och fann att varje registerStoredProcedureParameter()
samtalet skapar en ParameterRegistrationImplementor
instans som hamnar i en lista och skickas runt. Du kommer att notera att den här klassen lagrar positionen för parametern, som är oberoende av dess position i listan.