Skip to content

Commit d702412

Browse files
committed
pull getParameterMetadata() up to CommonQueryContract
and add getParameters() to ParameterMetadata (this is going to be useful in Hibernate Reactive)
1 parent 554861f commit d702412

File tree

6 files changed

+34
-9
lines changed

6 files changed

+34
-9
lines changed

hibernate-core/src/main/java/org/hibernate/procedure/internal/ProcedureParameterMetadataImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package org.hibernate.procedure.internal;
66

77
import java.util.ArrayList;
8+
import java.util.Collection;
89
import java.util.HashSet;
910
import java.util.List;
1011
import java.util.Set;
@@ -27,6 +28,7 @@
2728

2829
import static java.util.Collections.emptyList;
2930
import static java.util.Collections.emptySet;
31+
import static java.util.Collections.unmodifiableList;
3032

3133
/**
3234
* Specialized ParameterMetadataImplementor for callable queries implementing
@@ -80,6 +82,11 @@ public void visitParameters(Consumer<QueryParameter<?>> consumer) {
8082
}
8183
}
8284

85+
@Override
86+
public Collection<QueryParameter<?>> getParameters() {
87+
return unmodifiableList( parameters );
88+
}
89+
8390
@Override
8491
public boolean hasNamedParameters() {
8592
return parameterStrategy == ParameterStrategy.NAMED;

hibernate-core/src/main/java/org/hibernate/query/CommonQueryContract.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ public interface CommonQueryContract {
192192
*/
193193
CommonQueryContract setHint(String hintName, Object value);
194194

195+
/**
196+
* Get the {@link ParameterMetadata} object representing the parameters
197+
* of this query, and providing access to the {@link QueryParameter}s.
198+
*
199+
* @since 7.0
200+
*/
201+
ParameterMetadata getParameterMetadata();
202+
195203
/**
196204
* Bind the given argument to a named query parameter.
197205
* <p>

hibernate-core/src/main/java/org/hibernate/query/ParameterMetadata.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.query;
66

7+
import java.util.Collection;
78
import java.util.Set;
89
import java.util.function.Consumer;
910
import jakarta.persistence.Parameter;
@@ -21,6 +22,14 @@ public interface ParameterMetadata {
2122
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
2223
// General purpose
2324

25+
/**
26+
* The {@link QueryParameter}s representing the parameters of the query,
27+
* in no particular well-defined order.
28+
*
29+
* @since 7.0
30+
*/
31+
Collection<QueryParameter<?>> getParameters();
32+
2433
/**
2534
* The total number of registered parameters.
2635
*/

hibernate-core/src/main/java/org/hibernate/query/Query.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -422,13 +422,6 @@ default Query<R> applyLoadGraph(@SuppressWarnings("rawtypes") RootGraph graph) {
422422
*/
423423
QueryOptions getQueryOptions();
424424

425-
/**
426-
* Access to information about query parameters.
427-
*
428-
* @return information about query parameters.
429-
*/
430-
ParameterMetadata getParameterMetadata();
431-
432425
/**
433426
* Bind the given argument to a named query parameter.
434427
* <p>

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package org.hibernate.query.internal;
66

77
import java.util.ArrayList;
8+
import java.util.Collection;
89
import java.util.Collections;
910
import java.util.HashMap;
1011
import java.util.LinkedHashMap;
@@ -31,6 +32,7 @@
3132
import org.checkerframework.checker.nullness.qual.Nullable;
3233

3334
import static java.util.Collections.emptySet;
35+
import static java.util.Collections.unmodifiableSet;
3436
import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty;
3537

3638
/**
@@ -155,6 +157,11 @@ private static void verifyOrdinalParamLabels(Set<Integer> labels) {
155157
}
156158
}
157159

160+
@Override
161+
public Collection<QueryParameter<?>> getParameters() {
162+
return unmodifiableSet( queryParameters.keySet() );
163+
}
164+
158165
@Override
159166
public QueryParameterBindings createBindings(SessionFactoryImplementor sessionFactory) {
160167
return queryParameterBindingsTemplate == null
@@ -197,7 +204,7 @@ public void visitParameters(Consumer<QueryParameter<?>> consumer) {
197204

198205
@Override
199206
public Set<QueryParameterImplementor<?>> getRegistrations() {
200-
return Collections.unmodifiableSet( queryParameters.keySet() );
207+
return unmodifiableSet( queryParameters.keySet() );
201208
}
202209

203210
@Override

hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,8 @@ public int getFirstResult() {
564564
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
565565
// Parameter handling
566566

567-
protected abstract ParameterMetadataImplementor getParameterMetadata();
567+
@Override
568+
public abstract ParameterMetadataImplementor getParameterMetadata();
568569

569570
@SuppressWarnings({"unchecked", "rawtypes"})
570571
public Set<Parameter<?>> getParameters() {

0 commit comments

Comments
 (0)