Skip to content

Commit cc43be8

Browse files
committed
Adopt RelationalParameters and RelationalParameter to reflect the actual parameter type when using generics.
Closes #1691
1 parent eb63036 commit cc43be8

File tree

3 files changed

+17
-21
lines changed

3 files changed

+17
-21
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
3333
import org.springframework.data.repository.core.NamedQueries;
3434
import org.springframework.data.repository.core.RepositoryMetadata;
35+
import org.springframework.data.repository.query.Parameters;
36+
import org.springframework.data.repository.query.ParametersSource;
3537
import org.springframework.data.repository.query.QueryMethod;
3638
import org.springframework.jdbc.core.ResultSetExtractor;
3739
import org.springframework.jdbc.core.RowMapper;
@@ -71,8 +73,8 @@ public JdbcQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFac
7173
}
7274

7375
@Override
74-
protected RelationalParameters createParameters(Method method) {
75-
return new RelationalParameters(method);
76+
protected Parameters<?, ?> createParameters(ParametersSource parametersSource) {
77+
return new RelationalParameters(parametersSource);
7678
}
7779

7880
@Override
@@ -246,7 +248,7 @@ public boolean hasLockMode() {
246248

247249
/**
248250
* Looks up the {@link Lock} annotation from the query method.
249-
*
251+
*
250252
* @return the {@link Optional} wrapped {@link Lock} annotation.
251253
*/
252254
Optional<Lock> lookupLockAnnotation() {

spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryMethod.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@
3838
import org.springframework.data.relational.repository.query.SimpleRelationalEntityMetadata;
3939
import org.springframework.data.repository.core.RepositoryMetadata;
4040
import org.springframework.data.repository.query.Parameter;
41+
import org.springframework.data.repository.query.ParametersSource;
4142
import org.springframework.data.repository.query.QueryMethod;
4243
import org.springframework.data.repository.util.ReactiveWrapperConverters;
43-
import org.springframework.data.util.ReactiveWrappers;
4444
import org.springframework.data.util.Lazy;
45+
import org.springframework.data.util.ReactiveWrappers;
4546
import org.springframework.data.util.ReflectionUtils;
4647
import org.springframework.data.util.TypeInformation;
4748
import org.springframework.lang.Nullable;
@@ -122,12 +123,9 @@ public R2dbcQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFa
122123
this.lock = Optional.ofNullable(AnnotatedElementUtils.findMergedAnnotation(method, Lock.class));
123124
}
124125

125-
/* (non-Javadoc)
126-
* @see org.springframework.data.repository.query.QueryMethod#createParameters(java.lang.reflect.Method)
127-
*/
128126
@Override
129-
protected RelationalParameters createParameters(Method method) {
130-
return new RelationalParameters(method);
127+
protected RelationalParameters createParameters(ParametersSource parametersSource) {
128+
return new RelationalParameters(parametersSource);
131129
}
132130

133131
/* (non-Javadoc)

spring-data-relational/src/main/java/org/springframework/data/relational/repository/query/RelationalParameters.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
*/
1616
package org.springframework.data.relational.repository.query;
1717

18-
import java.lang.reflect.Method;
1918
import java.util.List;
2019

2120
import org.springframework.core.MethodParameter;
2221
import org.springframework.core.ResolvableType;
2322
import org.springframework.data.relational.repository.query.RelationalParameters.RelationalParameter;
2423
import org.springframework.data.repository.query.Parameter;
2524
import org.springframework.data.repository.query.Parameters;
25+
import org.springframework.data.repository.query.ParametersSource;
2626
import org.springframework.data.util.TypeInformation;
2727

2828
/**
@@ -33,23 +33,19 @@
3333
public class RelationalParameters extends Parameters<RelationalParameters, RelationalParameter> {
3434

3535
/**
36-
* Creates a new {@link RelationalParameters} instance from the given {@link Method}.
36+
* Creates a new {@link RelationalParameters} instance from the given {@link ParametersSource}.
3737
*
38-
* @param method must not be {@literal null}.
38+
* @param parametersSource must not be {@literal null}.
3939
*/
40-
public RelationalParameters(Method method) {
41-
super(method);
40+
public RelationalParameters(ParametersSource parametersSource) {
41+
super(parametersSource,
42+
methodParameter -> new RelationalParameter(methodParameter, parametersSource.getDomainTypeInformation()));
4243
}
4344

4445
private RelationalParameters(List<RelationalParameter> parameters) {
4546
super(parameters);
4647
}
4748

48-
@Override
49-
protected RelationalParameter createParameter(MethodParameter parameter) {
50-
return new RelationalParameter(parameter);
51-
}
52-
5349
@Override
5450
protected RelationalParameters createFrom(List<RelationalParameter> parameters) {
5551
return new RelationalParameters(parameters);
@@ -70,8 +66,8 @@ public static class RelationalParameter extends Parameter {
7066
*
7167
* @param parameter must not be {@literal null}.
7268
*/
73-
RelationalParameter(MethodParameter parameter) {
74-
super(parameter);
69+
RelationalParameter(MethodParameter parameter, TypeInformation<?> domainType) {
70+
super(parameter, domainType);
7571
this.parameter = parameter;
7672
}
7773

0 commit comments

Comments
 (0)