From 711fb53505677972764f0af3c8efab8db3bf7225 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Sun, 7 Mar 2021 15:11:52 -0500 Subject: [PATCH] Resolve JavaTypeDescriptor, if not explicitly specified, for StandardRowReader --- .../dynamic/DynamicResultBuilderBasicStandard.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hibernate-core/src/main/java/org/hibernate/query/results/dynamic/DynamicResultBuilderBasicStandard.java b/hibernate-core/src/main/java/org/hibernate/query/results/dynamic/DynamicResultBuilderBasicStandard.java index e339cd2760..5e28ae3773 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/results/dynamic/DynamicResultBuilderBasicStandard.java +++ b/hibernate-core/src/main/java/org/hibernate/query/results/dynamic/DynamicResultBuilderBasicStandard.java @@ -90,6 +90,15 @@ public class DynamicResultBuilderBasicStandard implements DynamicResultBuilderBa basicType = jdbcResultsMetadata.resolveType( jdbcPosition, explicitJavaTypeDescriptor ); } + final JavaTypeDescriptor javaTypeDescriptor; + + if ( explicitJavaTypeDescriptor != null ) { + javaTypeDescriptor = explicitJavaTypeDescriptor; + } + else { + javaTypeDescriptor = basicType.getJavaTypeDescriptor(); + } + final SqlExpressionResolver sqlExpressionResolver = domainResultCreationState.getSqlAstCreationState().getSqlExpressionResolver(); sqlExpressionResolver.resolveSqlSelection( sqlExpressionResolver.resolveSqlExpression( @@ -100,7 +109,10 @@ public class DynamicResultBuilderBasicStandard implements DynamicResultBuilderBa sessionFactory.getTypeConfiguration() ); - return new BasicResult<>( valuesArrayPosition, resultAlias, explicitJavaTypeDescriptor ); + // StandardRowReader expects there to be a JavaTypeDescriptor as part of the ResultAssembler. + assert javaTypeDescriptor != null; + + return new BasicResult<>( valuesArrayPosition, resultAlias, javaTypeDescriptor ); } }