Skip to content

Commit

Permalink
HHH-15542 Cannot invoke 'org.hibernate.query.BindableType.getBindable…
Browse files Browse the repository at this point in the history
…JavaType()' because 'parameterType' is null
  • Loading branch information
dreab8 committed Sep 30, 2022
1 parent adcf802 commit 2972e50
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
Expand Up @@ -462,23 +462,13 @@ public ProcedureCallImplementor<R> registerStoredProcedureParameter(
public <T> ProcedureParameter<T> registerParameter(int position, Class<T> javaType, ParameterMode mode) {
final BindableType<T> parameterType = getSessionFactory().resolveParameterBindType( javaType );

final Class<T> expressibleJavaType;
if ( parameterType == null ) {
expressibleJavaType = null;
}
else {
final SqmExpressible<T> sqmExpressible = parameterType.resolveExpressible( getSessionFactory() );
assert sqmExpressible != null;

expressibleJavaType = sqmExpressible.getExpressibleJavaType().getJavaTypeClass();
}

final ProcedureParameterImpl<T> procedureParameter = new ProcedureParameterImpl<>(
position,
mode,
expressibleJavaType,
getExpressibleJavaType( parameterType ),
parameterType
);

registerParameter( procedureParameter );

return procedureParameter;
Expand Down Expand Up @@ -518,7 +508,7 @@ public <T> ProcedureParameterImplementor<T> registerParameter(String name, Class
final ProcedureParameterImpl<T> parameter = new ProcedureParameterImpl<>(
name,
mode,
parameterType.getBindableJavaType(),
getExpressibleJavaType( parameterType ),
parameterType
);

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

private <T> Class<T> getExpressibleJavaType(BindableType<T> parameterType) {
if ( parameterType == null ) {
return null;
}
else {
final SqmExpressible<T> sqmExpressible = parameterType.resolveExpressible( getSessionFactory() );
assert sqmExpressible != null;

return sqmExpressible.getExpressibleJavaType().getJavaTypeClass();
}
}

@Override
public <T> ProcedureParameterImplementor<T> registerParameter(
String name,
Expand Down
Expand Up @@ -187,6 +187,9 @@ protected void bindParameterValue(
};
}
}
else if ( typeToUse == null ) {
throw new IllegalArgumentException( "Cannot determine the bindable type for procedure parameter: " + name );
}
else {
throw new NotYetImplementedFor6Exception( getClass() );
}
Expand Down

0 comments on commit 2972e50

Please sign in to comment.