Skip to content

Commit 050089e

Browse files
cigalygavinking
authored andcommitted
HHH-18960 If query parameter allows multiple value binding, accept List, Set, or Collection with parameter type as generic type
1 parent c96305a commit 050089e

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/AnnotationMetaEntity.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import static java.beans.Introspector.decapitalize;
6565
import static java.lang.Boolean.FALSE;
6666
import static java.util.Collections.emptyList;
67+
import static java.util.Objects.requireNonNullElse;
6768
import static java.util.stream.Collectors.toList;
6869
import static javax.lang.model.util.ElementFilter.fieldsIn;
6970
import static javax.lang.model.util.ElementFilter.methodsIn;
@@ -2738,11 +2739,13 @@ private void checkParameter(
27382739
if ( queryParamType!=null
27392740
//TODO: arguments of functions get assigned "unknown" which sucks
27402741
&& !"unknown".equals(queryParamType) ) {
2742+
final String realQueryParamType =
2743+
requireNonNullElse( context.qualifiedNameForEntityName( queryParamType ), queryParamType );
27412744
if ( param.getName() != null ) {
2742-
checkNamedParameter(param, paramNames, paramTypes, method, mirror, value, queryParamType);
2745+
checkNamedParameter(param, paramNames, paramTypes, method, mirror, value, realQueryParamType);
27432746
}
27442747
else if ( param.getPosition() != null ) {
2745-
checkOrdinalParameter(param, paramNames, paramTypes, method, mirror, value, queryParamType);
2748+
checkOrdinalParameter(param, paramNames, paramTypes, method, mirror, value, realQueryParamType);
27462749
}
27472750
}
27482751
}

tooling/metamodel-generator/src/main/java/org/hibernate/processor/annotation/NamedQueryMethod.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,20 @@ private void parameters(TreeSet<SqmParameter<?>> sortedParameters, StringBuilder
148148
declaration
149149
.append(", ");
150150
}
151-
declaration
152-
.append(parameterType(param))
153-
.append(" ")
154-
.append(parameterName(param));
151+
if ( param.allowMultiValuedBinding() ) {
152+
declaration
153+
.append(annotationMeta.importType(Constants.LIST))
154+
.append('<')
155+
.append( parameterType( param ) )
156+
.append("> ")
157+
.append( parameterName( param ) );
158+
}
159+
else {
160+
declaration
161+
.append( parameterType( param ) )
162+
.append( " " )
163+
.append( parameterName( param ) );
164+
}
155165
}
156166
declaration
157167
.append(')');

0 commit comments

Comments
 (0)