Redis Deserialization Issue between spring version 4.3.5.RELEASE and spring boot version 2.6.9

Viewed 30

Getting below exception while deserializing object in springBoot app (version 2.6.9) which was previous serialized and saved in Redis using spring only app (version 4.3.5)

org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is org.springframework.core.NestedIOException: Failed to deserialize object type; nested exception is java.lang.ClassNotFoundException: com.ceb.shl.shlonline.model.content.Assessments .

Redis and Jedis dependencies version i am using in springboot app are same as that used in spring only app.

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.6.2.RELEASE</version>
        </dependency>

<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.5.1</version>
        </dependency>

Earlier i was getting below error which got resolved after i added the core hibernate dependency with same version as in spring only app

            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.13.Final</version>
        </dependency>

org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: org.hibernate.collection.internal.AbstractPersistentCollection; local class incompatible: stream classdesc serialVersionUID = -1597691216679322715, local class serialVersionUID = 6275967693128102740

Code snippet for the redis configuration i am using is :

    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory cf) {
      RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(cf);
        StringRedisSerializer keySerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(keySerializer);
        redisTemplate.setHashKeySerializer(keySerializer);
        return redisTemplate;

I have tried using GenericJackson2JsonRedisSerializer ,GenericToStringSerializer , Jackson2JsonRedisSerializer but none seems to work .

Can anyone please help me understand why am i getting this error and how to resolve it .

0 Answers
Related