Cómo deserializar un objeto almacenado en Redis, si el nombre de clase de los cambios de objeto almacenados?

Abhishek:

He guardado un objeto en Redis, dicen Clase StorageConnection,

public void storeSecureConnection(String uniqueKey, Object storageConnection) {
        redisTemplateAdmin.opsForValue().set(uniqueKey, storageConnection);

}

Ahora, he cambiado el className de StorageConnection a DataConnection. Todos los campos y UID se mantiene intacta.

Ahora es darme un SerializationException en

public DataConnection getAdminDataObject(String uniqueKey) {    
        return  (DataConnection) redisTemplateAdmin.opsForValue().get(uniqueKey);
    }

¿Hay algún truco que puedo deserializar con nueva className?

Editar :

Aquí está RedisTemplate inicialización:

@Service
public class AdminDataBaseServiceImpl{
    private RedisTemplate<String, Object> redisTemplateAdmin;
    private HashOperations hashOps;

    private AdminDataBaseServiceImpl(RedisTemplate<String, Object> redisTemplateAdmin) {
    this.redisTemplateAdmin = redisTemplateAdmin;
    hashOps=redisTemplateAdmin.opsForHash();
}
Abhishek:

Solía GenericJackson2JsonRedisSerializerpara serializar el objeto y estaba almacenando en redis. Para cambiar el nombre de la clase, he utilizado StringRedisSerializerpara deserializar, cambió el nombre de clase y de nuevo almacenado en Redis con StringRedisSerializer.

A continuación, se utiliza, como de costumbre, GenericJackson2JsonRedisSerializerpara deserializar el objeto con el nuevo nombre de la clase. Funcionó.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215258&siteId=1
Recomendado
Clasificación