https://github.com/spring-projects/spring-framework/blob/v7.0.0-M3/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java#L528
if (parameter.getValue() instanceof Collection collection) {
Iterator<Object> iterator = collection.iterator();
Iterator<BindMarker> markers = bindMarkers.iterator();
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);
}
}
}
For example, for SELECT ... WHERE fund_codeA in (:fundCodes) OR fund_codeB in (:fundCodes), fundCodes references a List, then the code above only fill the first occurrence of :fundCodes.
parameter = ["00001"]
markers = [?, ?] // two occurrence
// iterate on parameter won't fill second "?"
// SELECT .... WHERE fund_codeA in (?) OR fund_codeB in (?)
https://github.com/spring-projects/spring-framework/blob/v7.0.0-M3/spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java#L528
For example, for
SELECT ... WHERE fund_codeA in (:fundCodes) OR fund_codeB in (:fundCodes),fundCodesreferences a List, then the code above only fill the first occurrence of:fundCodes.