diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java index b1c13ccc44..d0debced22 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import javax.sql.DataSource; @@ -456,18 +457,24 @@ public class CallMetaDataContext { matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, lowerCaseName)); } else { - String propertyName = JdbcUtils.convertUnderscoreNameToPropertyName(parameterName); - if (parameterSource.hasValue(propertyName)) { - matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, propertyName)); + String englishLowerCaseName = parameterName.toLowerCase(Locale.ENGLISH); + if (parameterSource.hasValue(englishLowerCaseName)) { + matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, englishLowerCaseName)); } else { - if (caseInsensitiveParameterNames.containsKey(lowerCaseName)) { - String sourceName = (String) caseInsensitiveParameterNames.get(lowerCaseName); - matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, sourceName)); + String propertyName = JdbcUtils.convertUnderscoreNameToPropertyName(parameterName); + if (parameterSource.hasValue(propertyName)) { + matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, propertyName)); } else { - logger.warn("Unable to locate the corresponding parameter value for '" + parameterName + - "' within the parameter values provided: " + caseInsensitiveParameterNames.values()); + if (caseInsensitiveParameterNames.containsKey(lowerCaseName)) { + String sourceName = (String) caseInsensitiveParameterNames.get(lowerCaseName); + matchedParameters.put(parameterName, SqlParameterSourceUtils.getTypedValue(parameterSource, sourceName)); + } + else { + logger.warn("Unable to locate the corresponding parameter value for '" + parameterName + + "' within the parameter values provided: " + caseInsensitiveParameterNames.values()); + } } } }