Skip to content

Commit cfc9b9c

Browse files
committed
HHH-15542 Cannot invoke 'org.hibernate.query.BindableType.getBindableJavaType()' because 'parameterType' is null
1 parent da1b1d6 commit cfc9b9c

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureCallImpl.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -462,23 +462,13 @@ public ProcedureCallImplementor<R> registerStoredProcedureParameter(
462462
public <T> ProcedureParameter<T> registerParameter(int position, Class<T> javaType, ParameterMode mode) {
463463
final BindableType<T> parameterType = getSessionFactory().resolveParameterBindType( javaType );
464464

465-
final Class<T> expressibleJavaType;
466-
if ( parameterType == null ) {
467-
expressibleJavaType = null;
468-
}
469-
else {
470-
final SqmExpressible<T> sqmExpressible = parameterType.resolveExpressible( getSessionFactory() );
471-
assert sqmExpressible != null;
472-
473-
expressibleJavaType = sqmExpressible.getExpressibleJavaType().getJavaTypeClass();
474-
}
475-
476465
final ProcedureParameterImpl<T> procedureParameter = new ProcedureParameterImpl<>(
477466
position,
478467
mode,
479-
expressibleJavaType,
468+
getExpressibleJavaType( parameterType ),
480469
parameterType
481470
);
471+
482472
registerParameter( procedureParameter );
483473

484474
return procedureParameter;
@@ -518,7 +508,7 @@ public <T> ProcedureParameterImplementor<T> registerParameter(String name, Class
518508
final ProcedureParameterImpl<T> parameter = new ProcedureParameterImpl<>(
519509
name,
520510
mode,
521-
parameterType.getBindableJavaType(),
511+
getExpressibleJavaType( parameterType ),
522512
parameterType
523513
);
524514

@@ -527,6 +517,18 @@ public <T> ProcedureParameterImplementor<T> registerParameter(String name, Class
527517
return parameter;
528518
}
529519

520+
private <T> Class<T> getExpressibleJavaType(BindableType<T> parameterType) {
521+
if ( parameterType == null ) {
522+
return null;
523+
}
524+
else {
525+
final SqmExpressible<T> sqmExpressible = parameterType.resolveExpressible( getSessionFactory() );
526+
assert sqmExpressible != null;
527+
528+
return sqmExpressible.getExpressibleJavaType().getJavaTypeClass();
529+
}
530+
}
531+
530532
@Override
531533
public <T> ProcedureParameterImplementor<T> registerParameter(
532534
String name,

hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ protected void bindParameterValue(
187187
};
188188
}
189189
}
190+
else if ( typeToUse == null ) {
191+
throw new IllegalArgumentException( "Cannot determine the bindable type for procedure parameter: " + name );
192+
}
190193
else {
191194
throw new NotYetImplementedFor6Exception( getClass() );
192195
}

0 commit comments

Comments
 (0)