I have data in my DB for field date with the following format: 2021-09-21 11:25:36
.
The Redis field is of type TEXT.
When I’m trying to read the data from date field from the DB, I get following exception:
Failed to convert from type [byte[]] to type [java.time.LocalDateTime] for value '{50, 48, 50, 49, 45, 48, 57, 45, 50, 49, 32, 49, 49, 58, 50, 53, 58, 51, 54}'; nested exception is java.time.format.DateTimeParseException: Text '2021-09-21 11:25:36' could not be parsed at index 10
org.springframework.core.convert.ConversionFailedException: Failed to convert from type [byte[]] to type [java.time.LocalDateTime] for value '{50, 48, 50, 49, 45, 48, 57, 45, 50, 49, 32, 49, 49, 58, 50, 53, 58, 51, 54}'; nested exception is java.time.format.DateTimeParseException: Text '2021-09-21 11:25:36' could not be parsed at index 10
(...)
Caused by: java.time.format.DateTimeParseException: Text '2021-09-21 11:25:36' could not be parsed at index 10
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2050)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1952)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:493)
at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:478)
at org.springframework.data.redis.core.convert.Jsr310Converters$BytesToLocalDateTimeConverter.convert(Jsr310Converters.java:113)
at org.springframework.data.redis.core.convert.Jsr310Converters$BytesToLocalDateTimeConverter.convert(Jsr310Converters.java:108)
at org.springframework.core.convert.support.GenericConversionService$ConverterAdapter.convert(GenericConversionService.java:386)
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41)
... 142 more
How can I assign a different convertor to this field in my entity or annotate that my LocalDateTime format is different than what is being expected? My current assumption is that the issue resides in the missing ‘T’ between the date and the time, but I have little to no possibility to change the data from the DB.
2
Answers
I found the answer a bit later myself using RedisCustomConverters:
This bean is necessary:
in combination with this custom converter:
You can use Jackson json format
com.fasterxml.jackson.annotation.JsonFormat