diff --git a/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java b/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java index 680213cb0909..7ed51ab3aad2 100644 --- a/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java +++ b/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java @@ -528,17 +528,25 @@ public void bind(BindTarget target, String identifier, Parameter parameter) { if (parameter.getValue() instanceof Collection collection) { Iterator iterator = collection.iterator(); Iterator markers = bindMarkers.iterator(); - while (iterator.hasNext()) { - Object valueToBind = iterator.next(); - if (valueToBind instanceof Object[] objects) { - for (Object object : objects) { - bind(target, markers, object); + do { + while (iterator.hasNext()) { + Object valueToBind = iterator.next(); + if (valueToBind instanceof Object[] objects) { + for (Object object : objects) { + bind(target, markers, object); + } + } + else { + bind(target, markers, valueToBind); } } - else { - bind(target, markers, valueToBind); + + if (markers.hasNext()) { + iterator = collection.iterator(); + } else { + break; } - } + } while (true); } else { for (BindMarker bindMarker : bindMarkers) {