Skip to content

Commit 5994ff9

Browse files
committed
use 'var' in the query interpretation cache stuff
1 parent 877ba78 commit 5994ff9

File tree

7 files changed

+119
-148
lines changed

7 files changed

+119
-148
lines changed

hibernate-core/src/main/java/org/hibernate/query/internal/NamedObjectRepositoryImpl.java

Lines changed: 37 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
import org.hibernate.HibernateException;
1616
import org.hibernate.QueryException;
1717
import org.hibernate.boot.Metadata;
18-
import org.hibernate.boot.query.NamedHqlQueryDefinition;
19-
import org.hibernate.boot.query.NamedNativeQueryDefinition;
20-
import org.hibernate.boot.query.NamedProcedureCallDefinition;
2118
import org.hibernate.boot.spi.MetadataImplementor;
2219
import org.hibernate.engine.spi.SessionFactoryImplementor;
2320
import org.hibernate.procedure.spi.NamedCallableQueryMemento;
@@ -33,7 +30,6 @@
3330
import org.hibernate.query.named.NamedQueryMemento;
3431
import org.hibernate.query.named.NamedResultSetMappingMemento;
3532
import org.hibernate.query.spi.QueryEngine;
36-
import org.hibernate.query.spi.QueryInterpretationCache;
3733
import org.hibernate.query.sql.spi.NamedNativeQueryMemento;
3834
import org.hibernate.query.sqm.UnknownEntityException;
3935
import org.hibernate.query.sqm.UnknownPathException;
@@ -70,13 +66,14 @@ public NamedObjectRepositoryImpl(
7066
@Override
7167
@SuppressWarnings("unchecked")
7268
public <R> Map<String, TypedQueryReference<R>> getNamedQueries(Class<R> resultType) {
73-
final Map<String, TypedQueryReference<R>> namedQueries = new HashMap<>( sqmMementoMap.size() + sqlMementoMap.size() );
74-
for ( Map.Entry<String, NamedSqmQueryMemento<?>> entry : sqmMementoMap.entrySet() ) {
69+
final Map<String, TypedQueryReference<R>> namedQueries =
70+
new HashMap<>( sqmMementoMap.size() + sqlMementoMap.size() );
71+
for ( var entry : sqmMementoMap.entrySet() ) {
7572
if ( resultType == entry.getValue().getResultType() ) {
7673
namedQueries.put( entry.getKey(), (TypedQueryReference<R>) entry.getValue() );
7774
}
7875
}
79-
for ( Map.Entry<String, NamedNativeQueryMemento<?>> entry : sqlMementoMap.entrySet() ) {
76+
for ( var entry : sqlMementoMap.entrySet() ) {
8077
if ( resultType == entry.getValue().getResultType() ) {
8178
namedQueries.put( entry.getKey(), (TypedQueryReference<R>) entry.getValue() );
8279
}
@@ -106,7 +103,6 @@ public void registerNamedQuery(String name, Query query) {
106103
if ( queryImplementor != null ) {
107104
if ( queryImplementor instanceof NativeQueryImplementor<?> nativeQueryImplementor ) {
108105
registerNativeQueryMemento( name, nativeQueryImplementor.toMemento( name ) );
109-
110106
}
111107
else if ( queryImplementor instanceof SqmQueryImplementor<?> sqmQueryImplementor ) {
112108
registerSqmQueryMemento( name, sqmQueryImplementor.toMemento( name ) );
@@ -127,12 +123,12 @@ else if ( queryImplementor instanceof SqmQueryImplementor<?> sqmQueryImplementor
127123
@Override
128124
public <R> TypedQueryReference<R> registerNamedQuery(String name, TypedQuery<R> query) {
129125
if ( query instanceof NativeQueryImplementor<R> nativeQueryImplementor ) {
130-
final NamedNativeQueryMemento<R> memento = nativeQueryImplementor.toMemento( name );
126+
final var memento = nativeQueryImplementor.toMemento( name );
131127
registerNativeQueryMemento( name, memento );
132128
return memento;
133129
}
134130
else if ( query instanceof SqmQueryImplementor<R> sqmQueryImplementor ) {
135-
final NamedSqmQueryMemento<R> memento = sqmQueryImplementor.toMemento( name );
131+
final var memento = sqmQueryImplementor.toMemento( name );
136132
registerSqmQueryMemento( name, memento );
137133
return memento;
138134
}
@@ -238,55 +234,51 @@ public NamedQueryMemento<?> resolve(
238234
if ( namedQuery != null ) {
239235
return namedQuery;
240236
}
241-
final NamedHqlQueryDefinition<?> namedHqlQueryDefinition = bootMetamodel.getNamedHqlQueryMapping( registrationName );
237+
final var namedHqlQueryDefinition = bootMetamodel.getNamedHqlQueryMapping( registrationName );
242238
if ( namedHqlQueryDefinition != null ) {
243-
final NamedSqmQueryMemento<?> resolved = namedHqlQueryDefinition.resolve( sessionFactory );
244-
sqmMementoMap.put( namedHqlQueryDefinition.getRegistrationName(), resolved );
245-
return resolved;
239+
final var memento = namedHqlQueryDefinition.resolve( sessionFactory );
240+
sqmMementoMap.put( namedHqlQueryDefinition.getRegistrationName(), memento );
241+
return memento;
246242
}
247-
final NamedNativeQueryDefinition<?> namedNativeQueryDefinition = bootMetamodel.getNamedNativeQueryMapping( registrationName );
243+
final var namedNativeQueryDefinition = bootMetamodel.getNamedNativeQueryMapping( registrationName );
248244
if ( namedNativeQueryDefinition != null ) {
249-
final NamedNativeQueryMemento<?> resolved = namedNativeQueryDefinition.resolve( sessionFactory );
250-
sqlMementoMap.put( namedNativeQueryDefinition.getRegistrationName(), resolved );
251-
return resolved;
245+
final var memento = namedNativeQueryDefinition.resolve( sessionFactory );
246+
sqlMementoMap.put( namedNativeQueryDefinition.getRegistrationName(), memento );
247+
return memento;
252248
}
253-
final NamedProcedureCallDefinition namedCallableQueryDefinition = bootMetamodel.getNamedProcedureCallMapping( registrationName );
249+
final var namedCallableQueryDefinition = bootMetamodel.getNamedProcedureCallMapping( registrationName );
254250
if ( namedCallableQueryDefinition != null ) {
255-
final NamedCallableQueryMemento resolved = namedCallableQueryDefinition.resolve( sessionFactory );
256-
callableMementoMap.put( namedCallableQueryDefinition.getRegistrationName(), resolved );
257-
return resolved;
251+
final var memento = namedCallableQueryDefinition.resolve( sessionFactory );
252+
callableMementoMap.put( namedCallableQueryDefinition.getRegistrationName(), memento );
253+
return memento;
258254
}
259255
return null;
260256
}
261257

262258
@Override
263259
public void prepare(SessionFactoryImplementor sessionFactory, Metadata bootMetamodel) {
264260
bootMetamodel.visitNamedHqlQueryDefinitions(
265-
namedHqlQueryDefinition -> {
266-
final NamedSqmQueryMemento<?> resolved = namedHqlQueryDefinition.resolve( sessionFactory );
267-
sqmMementoMap.put( namedHqlQueryDefinition.getRegistrationName(), resolved );
268-
}
261+
namedHqlQueryDefinition ->
262+
sqmMementoMap.put( namedHqlQueryDefinition.getRegistrationName(),
263+
namedHqlQueryDefinition.resolve( sessionFactory ) )
269264
);
270265

271266
bootMetamodel.visitNamedNativeQueryDefinitions(
272-
namedNativeQueryDefinition -> {
273-
final NamedNativeQueryMemento<?> resolved = namedNativeQueryDefinition.resolve( sessionFactory );
274-
sqlMementoMap.put( namedNativeQueryDefinition.getRegistrationName(), resolved );
275-
}
267+
namedNativeQueryDefinition ->
268+
sqlMementoMap.put( namedNativeQueryDefinition.getRegistrationName(),
269+
namedNativeQueryDefinition.resolve( sessionFactory ) )
276270
);
277271

278272
bootMetamodel.visitNamedResultSetMappingDefinition(
279-
namedResultSetMappingDefinition -> {
280-
final NamedResultSetMappingMemento resolved = namedResultSetMappingDefinition.resolve( () -> sessionFactory );
281-
resultSetMappingMementoMap.put( namedResultSetMappingDefinition.getRegistrationName(), resolved );
282-
}
273+
namedResultSetMappingDefinition ->
274+
resultSetMappingMementoMap.put( namedResultSetMappingDefinition.getRegistrationName(),
275+
namedResultSetMappingDefinition.resolve( () -> sessionFactory ) )
283276
);
284277

285278
bootMetamodel.visitNamedProcedureCallDefinition(
286-
namedProcedureCallDefinition -> {
287-
final NamedCallableQueryMemento resolved = namedProcedureCallDefinition.resolve( sessionFactory );
288-
callableMementoMap.put( namedProcedureCallDefinition.getRegistrationName(), resolved );
289-
}
279+
namedProcedureCallDefinition ->
280+
callableMementoMap.put( namedProcedureCallDefinition.getRegistrationName(),
281+
namedProcedureCallDefinition.resolve( sessionFactory ) )
290282
);
291283

292284
}
@@ -297,18 +289,17 @@ public void prepare(SessionFactoryImplementor sessionFactory, Metadata bootMetam
297289

298290
@Override
299291
public void validateNamedQueries(QueryEngine queryEngine) {
300-
final Map<String, HibernateException> errors = checkNamedQueries( queryEngine );
292+
final var errors = checkNamedQueries( queryEngine );
301293
if ( !errors.isEmpty() ) {
302294
int i = 0;
303295
final StringBuilder failingQueries = new StringBuilder( "Errors in named queries: " );
304-
for ( Map.Entry<String, HibernateException> entry : errors.entrySet() ) {
296+
for ( var entry : errors.entrySet() ) {
305297
QUERY_MESSAGE_LOGGER.namedQueryError( entry.getKey(), entry.getValue() );
306298
failingQueries.append( "\n" )
307299
.append(" [").append(++i).append("] Error in query named '").append( entry.getKey() ).append("'")
308300
.append(": ").append( entry.getValue().getMessage() );
309301
}
310-
final NamedQueryValidationException exception =
311-
new NamedQueryValidationException( failingQueries.toString(), errors );
302+
final var exception = new NamedQueryValidationException( failingQueries.toString(), errors );
312303
errors.values().forEach( exception::addSuppressed );
313304
throw exception;
314305
}
@@ -318,20 +309,17 @@ public void validateNamedQueries(QueryEngine queryEngine) {
318309
public Map<String, HibernateException> checkNamedQueries(QueryEngine queryEngine) {
319310
Map<String,HibernateException> errors = new HashMap<>();
320311

321-
final QueryInterpretationCache interpretationCache = queryEngine.getInterpretationCache();
312+
final var interpretationCache = queryEngine.getInterpretationCache();
313+
final var hqlTranslator = queryEngine.getHqlTranslator();
322314

323315
// Check named HQL queries
324316
log.tracef( "Checking %s named HQL queries", sqmMementoMap.size() );
325-
for ( NamedSqmQueryMemento<?> hqlMemento : sqmMementoMap.values() ) {
317+
for ( var hqlMemento : sqmMementoMap.values() ) {
326318
final String queryString = hqlMemento.getHqlString();
327319
final String registrationName = hqlMemento.getRegistrationName();
328320
try {
329321
log.tracef( "Checking named HQL query: %s", registrationName );
330-
interpretationCache.resolveHqlInterpretation(
331-
queryString,
332-
null,
333-
queryEngine.getHqlTranslator()
334-
);
322+
interpretationCache.resolveHqlInterpretation( queryString, null, hqlTranslator );
335323
}
336324
catch ( QueryException e ) {
337325
errors.put( registrationName, e );

hibernate-core/src/main/java/org/hibernate/query/internal/ParameterMetadataImpl.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import jakarta.persistence.Parameter;
3232
import org.checkerframework.checker.nullness.qual.Nullable;
3333

34+
import static java.util.Collections.emptyList;
3435
import static java.util.Collections.emptySet;
3536
import static java.util.Collections.unmodifiableSet;
3637
import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty;
@@ -65,7 +66,7 @@ public ParameterMetadataImpl(Map<QueryParameterImplementor<?>, List<SqmParameter
6566
Map<Integer, QueryParameterImplementor<?>> tempQueryParametersByPosition = null;
6667
// if we have any ordinal parameters, make sure the numbers
6768
// start with 1 and are contiguous
68-
for ( QueryParameterImplementor<?> queryParameter : queryParameters.keySet() ) {
69+
for ( var queryParameter : queryParameters.keySet() ) {
6970
if ( queryParameter.getPosition() != null ) {
7071
if ( tempQueryParametersByPosition == null ) {
7172
tempQueryParametersByPosition = new HashMap<>();
@@ -96,24 +97,24 @@ public ParameterMetadataImpl(
9697
Map<String, QueryParameterImplementor<?>> tempQueryParametersByName = null;
9798
Map<Integer, QueryParameterImplementor<?>> tempQueryParametersByPosition = null;
9899
if ( positionalQueryParameters != null ) {
99-
for ( QueryParameterImplementor<?> value : positionalQueryParameters.values() ) {
100-
this.queryParameters.put( value, Collections.emptyList() );
100+
for ( var queryParameter : positionalQueryParameters.values() ) {
101+
this.queryParameters.put( queryParameter, emptyList() );
101102
if ( tempQueryParametersByPosition == null ) {
102103
tempQueryParametersByPosition = new HashMap<>();
103104
}
104-
tempQueryParametersByPosition.put( value.getPosition(), value );
105+
tempQueryParametersByPosition.put( queryParameter.getPosition(), queryParameter );
105106
}
106107
if ( tempQueryParametersByPosition != null ) {
107108
verifyOrdinalParamLabels( tempQueryParametersByPosition.keySet() );
108109
}
109110
}
110111
if ( namedQueryParameters != null ) {
111-
for ( QueryParameterImplementor<?> value : namedQueryParameters.values() ) {
112+
for ( var queryParameter : namedQueryParameters.values() ) {
112113
if ( tempQueryParametersByName == null ) {
113114
tempQueryParametersByName = new HashMap<>();
114115
}
115-
this.queryParameters.put( value, Collections.emptyList() );
116-
tempQueryParametersByName.put( value.getName(), value );
116+
this.queryParameters.put( queryParameter, emptyList() );
117+
tempQueryParametersByName.put( queryParameter.getName(), queryParameter );
117118
}
118119
}
119120
this.queryParametersByPosition = tempQueryParametersByPosition;
@@ -176,13 +177,12 @@ public int getParameterCount() {
176177

177178
@Override
178179
public <T> BindableType<T> getInferredParameterType(QueryParameter<T> parameter) {
179-
final List<SqmParameter<?>> sqmParameters =
180-
queryParameters.get( (QueryParameterImplementor<T>) parameter );
180+
final var sqmParameters = queryParameters.get( (QueryParameterImplementor<T>) parameter );
181181
if ( sqmParameters == null || sqmParameters.isEmpty() ) {
182182
return null;
183183
}
184-
for ( SqmParameter<?> sqmParameter : sqmParameters ) {
185-
final BindableType<?> nodeType = sqmParameter.getNodeType();
184+
for ( var sqmParameter : sqmParameters ) {
185+
final var nodeType = sqmParameter.getNodeType();
186186
if ( nodeType != null ) {
187187
//noinspection unchecked
188188
return (BindableType<T>) nodeType;
@@ -209,7 +209,7 @@ public Set<QueryParameterImplementor<?>> getRegistrations() {
209209

210210
@Override
211211
public boolean hasAnyMatching(Predicate<QueryParameterImplementor<?>> filter) {
212-
for ( QueryParameterImplementor<?> queryParameter : queryParameters.keySet() ) {
212+
for ( var queryParameter : queryParameters.keySet() ) {
213213
if ( filter.test( queryParameter ) ) {
214214
return true;
215215
}
@@ -255,7 +255,7 @@ public QueryParameterImplementor<?> findQueryParameter(String name) {
255255

256256
@Override
257257
public QueryParameterImplementor<?> getQueryParameter(String name) {
258-
final QueryParameterImplementor<?> parameter = findQueryParameter( name );
258+
final var parameter = findQueryParameter( name );
259259
if ( parameter != null ) {
260260
return parameter;
261261
}
@@ -293,7 +293,7 @@ public QueryParameterImplementor<?> findQueryParameter(int positionLabel) {
293293

294294
@Override
295295
public QueryParameterImplementor<?> getQueryParameter(int positionLabel) {
296-
final QueryParameterImplementor<?> queryParameter = findQueryParameter( positionLabel );
296+
final var queryParameter = findQueryParameter( positionLabel );
297297
if ( queryParameter != null ) {
298298
return queryParameter;
299299
}

0 commit comments

Comments
 (0)