I have been trying to use Spring Data Redis but it fails for queries with List in them and just won't work. I tested it with normal fields such as ID and it works fine without issues, would appreciate it if someone can look at my code, thanks!
I have the following model:
@RedisHash("Flight")@Data@NoArgsConstructor@AllArgsConstructorpublic class Flight implements Serializable { @Id private String id; @Indexed private List<String> dayOfWeek;}
But when I try to define a query in my repository as follows:
@Repositorypublic interface FlightRepository extends CrudRepository<Flight, String> { List<Flight> findFlightsByDayOfWeek(List<String> dayOfWeek);}
It throws the following exception when called:
Exception in thread "main" org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [byte] for value 'Monday'; nested exception is java.lang.NumberFormatException: For input string: "Monday" at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:47) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192) at org.springframework.core.convert.support.CollectionToArrayConverter.convert(CollectionToArrayConverter.java:75) at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:192) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175) at org.springframework.data.redis.core.RedisQueryEngine.keys(RedisQueryEngine.java:202) at org.springframework.data.redis.core.RedisQueryEngine.lambda$doFind$0(RedisQueryEngine.java:102) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:223) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:190) at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:177) at org.springframework.data.redis.core.RedisKeyValueAdapter.execute(RedisKeyValueAdapter.java:597) at org.springframework.data.redis.core.RedisQueryEngine.doFind(RedisQueryEngine.java:139) at org.springframework.data.redis.core.RedisQueryEngine.execute(RedisQueryEngine.java:81) at org.springframework.data.redis.core.RedisQueryEngine.execute(RedisQueryEngine.java:52) at org.springframework.data.keyvalue.core.QueryEngine.execute(QueryEngine.java:73) at org.springframework.data.keyvalue.core.AbstractKeyValueAdapter.find(AbstractKeyValueAdapter.java:87) at org.springframework.data.keyvalue.core.KeyValueTemplate.lambda$find$6(KeyValueTemplate.java:395) at org.springframework.data.keyvalue.core.KeyValueTemplate.execute(KeyValueTemplate.java:362) at org.springframework.data.keyvalue.core.KeyValueTemplate.executeRequired(KeyValueTemplate.java:377) at org.springframework.data.keyvalue.core.KeyValueTemplate.find(KeyValueTemplate.java:393) at org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.doExecute(KeyValuePartTreeQuery.java:136) at org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.execute(KeyValuePartTreeQuery.java:110) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:159) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) at com.sun.proxy.$Proxy66.findFlightsByDayOfWeek(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) at com.sun.proxy.$Proxy66.findFlightsByDayOfWeek(Unknown Source) at com.distributed.airways.Application.initDatabase(Application.java:25) at com.distributed.airways.Application.main(Application.java:18)Caused by: java.lang.NumberFormatException: For input string: "Monday" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Byte.parseByte(Byte.java:149) at java.lang.Byte.valueOf(Byte.java:205) at java.lang.Byte.valueOf(Byte.java:231) at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:205) at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:64) at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:50) at org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.convert(GenericConversionService.java:437) at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41) ... 46 more