Kort antwoord:keer de volgorde van uw twee aanroepen om naar registerStoredProcedureParameter()
:
storedProcedure.registerStoredProcedureParameter(1, Object.class, ParameterMode.REF_CURSOR);
storedProcedure.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
Lang antwoord:ik heb wat gegraven in de Hibernate-broncode voor ondersteuning van Postgress callable-statements
, en ontdekte dat elke registerStoredProcedureParameter()
oproep maakt een ParameterRegistrationImplementor
instantie die in een lijst wordt geplakt en wordt doorgegeven. U zult zien dat deze klasse de positie van de parameter opslaat, die onafhankelijk is van zijn positie in de lijst.
Geen erg slimme manier om dingen te doen (IMHO), maar de oplossing is in ieder geval eenvoudig:als je de volgorde van je oproepen verandert, zou het goed moeten komen.