diff --git a/src/main/java/org/springframework/data/redis/connection/ReturnType.java b/src/main/java/org/springframework/data/redis/connection/ReturnType.java index 2ba37e2ab9..5085e6e6bd 100644 --- a/src/main/java/org/springframework/data/redis/connection/ReturnType.java +++ b/src/main/java/org/springframework/data/redis/connection/ReturnType.java @@ -73,7 +73,11 @@ public static ReturnType fromJavaType(@Nullable Class javaType) { return ReturnType.BOOLEAN; } - if (ClassUtils.isAssignable(Long.class, javaType)) { + if (ClassUtils.isAssignable(Double.class, javaType) || ClassUtils.isAssignable(Float.class, javaType)) { + return ReturnType.VALUE; + } + + if (ClassUtils.isAssignable(Number.class, javaType)) { return ReturnType.INTEGER; } diff --git a/src/test/java/org/springframework/data/redis/connection/ReturnTypeUnitTests.java b/src/test/java/org/springframework/data/redis/connection/ReturnTypeUnitTests.java index a455115c34..fb5c24bf16 100644 --- a/src/test/java/org/springframework/data/redis/connection/ReturnTypeUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/ReturnTypeUnitTests.java @@ -34,8 +34,19 @@ class ReturnTypeUnitTests { @ParameterizedTest // DATAREDIS-1245 @ValueSource(classes = { List.class, ArrayList.class, LinkedList.class }) void shouldConsiderListsAsMultiType(Class listClass) { - assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.MULTI); } + @ParameterizedTest // GH-3090 + @ValueSource(classes = { Integer.class, Long.class, Number.class }) + void shouldConsiderIntegerType(Class listClass) { + assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.INTEGER); + } + + @ParameterizedTest // GH-3090 + @ValueSource(classes = { Double.class, Float.class, String.class }) + void shouldConsiderValueType(Class listClass) { + assertThat(ReturnType.fromJavaType(listClass)).isEqualTo(ReturnType.VALUE); + } + }