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();
}
Solía GenericJackson2JsonRedisSerializer
para serializar el objeto y estaba almacenando en redis. Para cambiar el nombre de la clase, he utilizado StringRedisSerializer
para deserializar, cambió el nombre de clase y de nuevo almacenado en Redis con StringRedisSerializer
.
A continuación, se utiliza, como de costumbre, GenericJackson2JsonRedisSerializer
para deserializar el objeto con el nuevo nombre de la clase. Funcionó.