Skip to content

Commit a784ca2

Browse files
committed
HHH-18439 Account for null values in query cache hit
Also, solve an assertion error in query result type check when selecting `null` literals
1 parent 4bf11f8 commit a784ca2

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,10 @@ protected static void verifyResultType(Class<?> resultClass, @Nullable SqmExpres
10941094
}
10951095

10961096
final JavaType<?> selectionExpressibleJavaType = selectionExpressible.getExpressibleJavaType();
1097-
assert selectionExpressibleJavaType != null;
1097+
if ( selectionExpressibleJavaType == null ) {
1098+
// nothing we can validate
1099+
return;
1100+
}
10981101

10991102
final Class<?> selectionExpressibleJavaTypeClass = selectionExpressibleJavaType.getJavaTypeClass();
11001103
if ( selectionExpressibleJavaTypeClass != Object.class ) {
@@ -1103,7 +1106,7 @@ protected static void verifyResultType(Class<?> resultClass, @Nullable SqmExpres
11031106
return;
11041107
}
11051108

1106-
if ( selectionExpressibleJavaType instanceof PrimitiveJavaType<?> primitiveJavaType ) {
1109+
if ( selectionExpressibleJavaType instanceof final PrimitiveJavaType<?> primitiveJavaType ) {
11071110
if ( primitiveJavaType.getPrimitiveClass() == resultClass ) {
11081111
return;
11091112
}

hibernate-core/src/main/java/org/hibernate/sql/results/jdbc/internal/JdbcValuesCacheHit.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,12 @@ public Object getCurrentRowValue(int valueIndex) {
176176
if ( valueIndexesToCacheIndexes == null ) {
177177
return ( (Object[]) row )[valueIndex];
178178
}
179-
else if ( row.getClass() != Object[].class ) {
180-
assert valueIndexesToCacheIndexes[valueIndex] == 0;
181-
return row;
179+
else if ( row instanceof Object[] ) {
180+
return ( (Object[]) row )[valueIndexesToCacheIndexes[valueIndex]];
182181
}
183182
else {
184-
return ( (Object[]) row )[valueIndexesToCacheIndexes[valueIndex]];
183+
assert valueIndexesToCacheIndexes[valueIndex] == 0;
184+
return row;
185185
}
186186
}
187187

0 commit comments

Comments
 (0)