Skip to content

Commit 94c4713

Browse files
mp911deodrotbohm
authored andcommitted
DATACMNS-1556 - Conditionally copy and unwrap query method arguments.
ParametersParameterAccessor now inspects invocation arguments whether we need to unwrap these at all. If not, we skip copying the list of values.
1 parent f1bc778 commit 94c4713

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/main/java/org/springframework/data/repository/query/ParametersParameterAccessor.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.springframework.data.repository.query;
1717

1818
import java.util.ArrayList;
19+
import java.util.Arrays;
1920
import java.util.Iterator;
2021
import java.util.List;
2122
import java.util.Optional;
@@ -51,11 +52,26 @@ public ParametersParameterAccessor(Parameters<?, ?> parameters, Object[] values)
5152
Assert.isTrue(parameters.getNumberOfParameters() == values.length, "Invalid number of parameters given!");
5253

5354
this.parameters = parameters;
54-
this.values = new ArrayList<>(values.length);
55+
56+
if (requiresUnwrapping(values)) {
57+
this.values = new ArrayList<>(values.length);
58+
for (Object value : values) {
59+
this.values.add(QueryExecutionConverters.unwrap(value));
60+
}
61+
} else {
62+
this.values = Arrays.asList(values);
63+
}
64+
}
65+
66+
private static boolean requiresUnwrapping(Object[] values) {
5567

5668
for (Object value : values) {
57-
this.values.add(QueryExecutionConverters.unwrap(value));
69+
if (value != null && QueryExecutionConverters.supports(value.getClass())) {
70+
return true;
71+
}
5872
}
73+
74+
return false;
5975
}
6076

6177
/**

0 commit comments

Comments
 (0)