Skip to content

Commit a85eb04

Browse files
committed
HHH-19868 RowTransformerConstructorImpl throws NullPointerException when TupleMetadata is null
1 parent 112dbbc commit a85eb04

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ protected TupleMetadata buildTupleMetadata(SqmStatement<?> statement, Class<R> r
316316
if ( statement instanceof SqmSelectStatement<?> select ) {
317317
final var selections =
318318
select.getQueryPart().getFirstQuerySpec().getSelectClause().getSelections();
319-
return isTupleMetadataRequired( resultType, selections.get(0) )
319+
return selections.size() > 1 || isTupleMetadataRequired( resultType, selections.get(0) )
320320
? getTupleMetadata( selections )
321321
: null;
322322
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66

77
import jakarta.persistence.TupleElement;
88
import org.hibernate.InstantiationException;
9+
import org.hibernate.query.sqm.SqmExpressible;
10+
import org.hibernate.query.sqm.tree.SqmExpressibleAccessor;
911
import org.hibernate.sql.results.spi.RowTransformer;
12+
import org.hibernate.type.spi.TypeConfiguration;
1013

1114
import java.lang.reflect.Constructor;
1215
import java.util.List;
1316

14-
import org.hibernate.query.sqm.SqmExpressible;
15-
import org.hibernate.query.sqm.tree.SqmExpressibleAccessor;
16-
import org.hibernate.type.spi.TypeConfiguration;
17-
1817
import static java.util.stream.Collectors.toList;
1918
import static org.hibernate.sql.results.graph.instantiation.internal.InstantiationHelper.findMatchingConstructor;
2019

@@ -32,6 +31,7 @@ public RowTransformerConstructorImpl(
3231
TupleMetadata tupleMetadata,
3332
TypeConfiguration typeConfiguration) {
3433
this.type = type;
34+
assert tupleMetadata != null : "TupleMetadata must not be null";
3535
final List<TupleElement<?>> elements = tupleMetadata.getList();
3636
final List<Class<?>> argumentTypes = elements.stream()
3737
.map( RowTransformerConstructorImpl::resolveElementJavaType )

0 commit comments

Comments
 (0)