Skip to content

Commit fec167b

Browse files
committed
very minor cleanup to ConcreteSqmSelectQueryPlan
1 parent e093b68 commit fec167b

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

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

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.hibernate.query.sqm.tree.expression.SqmParameter;
3333
import org.hibernate.query.sqm.tree.select.SqmDynamicInstantiation;
3434
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
35+
import org.hibernate.query.sqm.tree.select.SqmSelectableNode;
3536
import org.hibernate.query.sqm.tree.select.SqmSelection;
3637
import org.hibernate.sql.ast.SqlAstTranslator;
3738
import org.hibernate.sql.ast.tree.expression.Expression;
@@ -75,7 +76,7 @@ public class ConcreteSqmSelectQueryPlan<R> implements SelectQueryPlan<R> {
7576
private final SqmSelectStatement<?> sqm;
7677
private final DomainParameterXref domainParameterXref;
7778
private final RowTransformer<R> rowTransformer;
78-
private final SqmInterpreter<Object, ResultsConsumer<?, R>> executeQueryInterpreter;
79+
private final SqmInterpreter<?, ? extends ResultsConsumer<?, R>> executeQueryInterpreter;
7980
private final SqmInterpreter<List<R>, Void> listInterpreter;
8081
private final SqmInterpreter<ScrollableResultsImplementor<R>, ScrollMode> scrollInterpreter;
8182

@@ -356,33 +357,31 @@ else if ( isClass( resultType ) ) {
356357
private static <T> RowTransformer<T> makeRowTransformerTupleTransformerAdapter(
357358
SqmSelectStatement<?> sqm,
358359
QueryOptions queryOptions) {
360+
@SuppressWarnings("unchecked")
361+
final TupleTransformer<T> tupleTransformer = (TupleTransformer<T>) queryOptions.getTupleTransformer();
362+
return new RowTransformerTupleTransformerAdapter<>( adapterAliases( sqm ), tupleTransformer );
363+
}
364+
365+
private static String[] adapterAliases(SqmSelectStatement<?> sqm) {
359366
final List<String> aliases = new ArrayList<>();
360367
for ( SqmSelection<?> sqmSelection : sqm.getQuerySpec().getSelectClause().getSelections() ) {
361368
// The row a tuple transformer gets to see only contains 1 element for a dynamic instantiation
362-
if ( sqmSelection.getSelectableNode() instanceof SqmDynamicInstantiation<?> ) {
369+
final SqmSelectableNode<?> selectableNode = sqmSelection.getSelectableNode();
370+
if ( selectableNode instanceof SqmDynamicInstantiation<?> ) {
363371
aliases.add( sqmSelection.getAlias() );
364372
}
365373
else {
366-
sqmSelection.getSelectableNode().visitSubSelectableNodes(
367-
subSelection -> aliases.add( subSelection.getAlias() )
368-
);
374+
selectableNode.visitSubSelectableNodes( subSelection -> aliases.add( subSelection.getAlias() ) );
369375
}
370376
}
371-
372-
373-
@SuppressWarnings("unchecked")
374-
TupleTransformer<T> tupleTransformer = (TupleTransformer<T>) queryOptions.getTupleTransformer();
375-
return new RowTransformerTupleTransformerAdapter<>( toStringArray( aliases ), tupleTransformer );
377+
return toStringArray( aliases );
376378
}
377379

378380
@Override
379381
public <T> T executeQuery(DomainQueryExecutionContext executionContext, ResultsConsumer<T, R> resultsConsumer) {
380-
//noinspection unchecked,rawtypes
381-
return withCacheableSqmInterpretation(
382-
executionContext,
383-
resultsConsumer,
384-
(SqmInterpreter<T, ResultsConsumer<T, R>>) (SqmInterpreter) executeQueryInterpreter
385-
);
382+
@SuppressWarnings("unchecked") //TODO: check the return type
383+
var interpreter = (SqmInterpreter<T, ResultsConsumer<T, R>>) executeQueryInterpreter;
384+
return withCacheableSqmInterpretation( executionContext, resultsConsumer, interpreter );
386385
}
387386

388387
@Override

0 commit comments

Comments
 (0)