From 9f4a66fb86d836b5a6799b12ca3071f0bbf6007e Mon Sep 17 00:00:00 2001 From: Vishnudev K Date: Sat, 8 Jul 2017 17:06:23 +0000 Subject: [PATCH] Update StoredProcedureJpaQuery.java storedProcedureQuery.getOutputParameterValue(i) for RefCursor is not supported by Hibernate. we have to use storedProcedureQuery.getResultList(); Change to call getResultList() instead of getOutputParameterValue() when hibernate throw new ParameterMisuseException( "REF_CURSOR parameters should be accessed via results" ); Fix for the issue https://jira.spring.io/browse/DATAJPA-1145 --- .../data/jpa/repository/query/StoredProcedureJpaQuery.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/StoredProcedureJpaQuery.java b/src/main/java/org/springframework/data/jpa/repository/query/StoredProcedureJpaQuery.java index 0713c074eb..4e060b06c3 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/StoredProcedureJpaQuery.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/StoredProcedureJpaQuery.java @@ -116,9 +116,13 @@ Object extractOutputValue(StoredProcedureQuery storedProcedureQuery) { String outputParameterName = procedureAttributes.getOutputParameterName(); JpaParameters parameters = getQueryMethod().getParameters(); - return useNamedParameters && StringUtils.hasText(outputParameterName) ? // + try{ + return useNamedParameters && StringUtils.hasText(outputParameterName) ? // storedProcedureQuery.getOutputParameterValue(outputParameterName) : storedProcedureQuery.getOutputParameterValue(parameters.getNumberOfParameters() + 1); + }catch(PersistenceException pe){ + return storedProcedureQuery.getResultList(); + } } /**