diff --git a/pom.xml b/pom.xml
index 6b8e78a089..1e5014df00 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-relational-parent
- 3.0.0-SNAPSHOT
+ 3.0.0-1212-query-in-clause-with-enum-SNAPSHOT
pom
Spring Data Relational Parent
diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml
index db3b7ddd1a..8d11cfa4ff 100644
--- a/spring-data-jdbc-distribution/pom.xml
+++ b/spring-data-jdbc-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 3.0.0-SNAPSHOT
+ 3.0.0-1212-query-in-clause-with-enum-SNAPSHOT
../pom.xml
diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml
index 547ff62b8b..017b699139 100644
--- a/spring-data-jdbc/pom.xml
+++ b/spring-data-jdbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-jdbc
- 3.0.0-SNAPSHOT
+ 3.0.0-1212-query-in-clause-with-enum-SNAPSHOT
Spring Data JDBC
Spring Data module for JDBC repositories.
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 3.0.0-SNAPSHOT
+ 3.0.0-1212-query-in-clause-with-enum-SNAPSHOT
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
index 0e8f665cf6..720aa5e483 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/BasicJdbcConverter.java
@@ -267,8 +267,7 @@ public JdbcValue writeJdbcValue(@Nullable Object value, Class> columnType, int
return writeJdbcValue(value, columnType, JdbcUtil.jdbcTypeFor(sqlType));
}
-
- /*
+ /*
* (non-Javadoc)
* @see org.springframework.data.jdbc.core.convert.JdbcConverter#writeValue(java.lang.Object, java.lang.Class, int)
*/
diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java
index 11c7cfe2c1..99e7c82ade 100644
--- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java
+++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020-2021 the original author or authors.
+ * Copyright 2020-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,9 +19,12 @@
import java.lang.reflect.Constructor;
import java.sql.SQLType;
+import java.util.ArrayList;
+import java.util.List;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.BeanFactory;
+import org.springframework.core.ResolvableType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.jdbc.core.convert.JdbcColumnTypes;
import org.springframework.data.jdbc.core.convert.JdbcConverter;
@@ -29,6 +32,7 @@
import org.springframework.data.jdbc.support.JdbcUtil;
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.relational.repository.query.RelationalParameterAccessor;
+import org.springframework.data.relational.repository.query.RelationalParameters;
import org.springframework.data.relational.repository.query.RelationalParametersParameterAccessor;
import org.springframework.data.repository.query.Parameter;
import org.springframework.data.repository.query.Parameters;
@@ -53,6 +57,7 @@
* @author Maciej Walkowiak
* @author Mark Paluch
* @author Hebert Coelho
+ * @author Chirag Tailor
* @since 2.0
*/
public class StringBasedJdbcQuery extends AbstractJdbcQuery {
@@ -149,11 +154,34 @@ private void convertAndAddParameter(MapSqlParameterSource parameters, Parameter
String parameterName = p.getName().orElseThrow(() -> new IllegalStateException(PARAMETER_NEEDS_TO_BE_NAMED));
- Class> parameterType = queryMethod.getParameters().getParameter(p.getIndex()).getType();
- Class> conversionTargetType = JdbcColumnTypes.INSTANCE.resolvePrimitiveType(parameterType);
+ RelationalParameters.RelationalParameter parameter = queryMethod.getParameters().getParameter(p.getIndex());
+ ResolvableType resolvableType = parameter.getResolvableType();
+ Class> type = resolvableType.resolve();
+ Assert.notNull(type, "@Query parameter could not be resolved!");
- JdbcValue jdbcValue = converter.writeJdbcValue(value, conversionTargetType,
- JdbcUtil.targetSqlTypeFor(conversionTargetType));
+ JdbcValue jdbcValue;
+ if (value instanceof Iterable) {
+
+ List