"reserveFirstParameter" boolean parameter is being ignored in QueryParameterBindingsImpl#verifyParametersBound and this leads to throw new QueryException( "Ordinal parameter not bound : " + parameter.getPosition() ); when the first parameter is being checked. Initial conditions: 1. Have the following Oracle procedure: PROCEDURE LoadValuesUsingOracleRefCursor( returning_values IN OUT SYS_REFCURSOR, some_parameters IN CLOB ) AS BEGIN ... END LoadValuesUsingOracleRefCursor; 2. Have the following named query in a hbm.xml file: <sql-query name="load_values_from_db" callable="true"> {call LoadValuesUsingOracleRefCursor(?, ?)} </sql-query> Test case: NativeQuery query = entityManager.unwrap(Session.class).getNamedNativeQuery("load_values_from_db"); query.setParameter(2, "A_STRING_VALUE"); query.list; Actual result: Following exception is thwrown: Caused by: org.hibernate.QueryException: Ordinal parameter not bound : 1 at org.hibernate.query.internal.QueryParameterBindingsImpl.verifyParametersBound(QueryParameterBindingsImpl.java:213) at org.hibernate.query.internal.AbstractProducedQuery.beforeQuery(AbstractProducedQuery.java:1425) at org.hibernate.query.internal.NativeQueryImpl.beforeQuery(NativeQueryImpl.java:249) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1531) Sometime it's impossible to use StoredProcedureQuery with its registerStoredProcedureParameter(1, Class.class, ParameterMode.REF_CURSOR), because WebLogic 12.2.1 still uses JDBC 4.0 Oracle driver, not 4.2. |