Skip to content

Commit 1c4c34c

Browse files
committed
Correctly fill multiple named parameters with collection
Fixes #34768 Signed-off-by: Yubao Liu <[email protected]>
1 parent 39e263f commit 1c4c34c

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

Diff for: spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java

+16-8
Original file line numberDiff line numberDiff line change
@@ -528,17 +528,25 @@ public void bind(BindTarget target, String identifier, Parameter parameter) {
528528
if (parameter.getValue() instanceof Collection collection) {
529529
Iterator<Object> iterator = collection.iterator();
530530
Iterator<BindMarker> markers = bindMarkers.iterator();
531-
while (iterator.hasNext()) {
532-
Object valueToBind = iterator.next();
533-
if (valueToBind instanceof Object[] objects) {
534-
for (Object object : objects) {
535-
bind(target, markers, object);
531+
do {
532+
while (iterator.hasNext()) {
533+
Object valueToBind = iterator.next();
534+
if (valueToBind instanceof Object[] objects) {
535+
for (Object object : objects) {
536+
bind(target, markers, object);
537+
}
538+
}
539+
else {
540+
bind(target, markers, valueToBind);
536541
}
537542
}
538-
else {
539-
bind(target, markers, valueToBind);
543+
544+
if (markers.hasNext()) {
545+
iterator = collection.iterator();
546+
} else {
547+
break;
540548
}
541-
}
549+
} while (true);
542550
}
543551
else {
544552
for (BindMarker bindMarker : bindMarkers) {

0 commit comments

Comments
 (0)