Recuperando uma Lista de DefaultMutableTreeNode de um campo LONGBLOB do MySql

Boa tarde Pessoal!

Estou serializando duas listas de DefaultMutableTreeNode e recupero elas posteriormente.

Acontece que quando crio as Lista, eu consigo alterar os atributos dos objetos contidos. Porém quando recupero estas Listas do MySql não consigo mais alterar os atributos destes objetos.

Alguém sabe o que pode estar acontecendo?

Segue oc códigos

Instancia de DefaultMutableTreeNode

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui.util.treeModel;

import java.util.Enumeration;

import javax.swing.tree.DefaultMutableTreeNode;


/**
 *
 * @author Jucélio Horácio Vieira
 */
public class Nodo extends DefaultMutableTreeNode{

	public final static int SINGLE_SELECTION = 0;
	public final static int DIG_IN_SELECTION = 4;

	protected int selectionMode;
	protected boolean isSelected;

	public Nodo() {
		this("", true, true);
        setSelectionMode(DIG_IN_SELECTION);
	}

	public Nodo(Object userObject) {
		this(userObject, true, true);
        setSelectionMode(DIG_IN_SELECTION);
	}

	public Nodo(Object userObject, boolean allowsChildren, boolean isSelected) {
		super(userObject, allowsChildren);
		this.isSelected = isSelected;
		setSelectionMode(DIG_IN_SELECTION);
        
	}


	public void setSelectionMode(int mode) {
		selectionMode = mode;
	}

	public int getSelectionMode() {
		return selectionMode;
	}

	public void setSelected(boolean isSelected) {
		this.isSelected = isSelected;

		if ((selectionMode == DIG_IN_SELECTION)
				&& (children != null)
                ) {
			Enumeration enume = children.elements();      
			while (enume.hasMoreElements()) {
				Nodo node = (Nodo)enume.nextElement();
				node.setSelected(isSelected);
			}
		}
	}

	public boolean isSelected() {
		return isSelected;
	}


	// If you want to change "isSelected" by CellEditor,
	/*
	  public void setUserObject(Object obj) {
	    if (obj instanceof Boolean) {
	      setSelected(((Boolean)obj).booleanValue());
	    } else {
	      super.setUserObject(obj);
	    }
	  }
	 */
        
}

Objeto que compõe a JTtree e extende Nodo

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui.util.treeModel;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jucélio Horácio Vieira
 */
public class Registro extends Nodo implements Serializable{
    private static final long serialVersionUID = 1L;

	private String bloco;
	private String registro;
    private String descricao;
    
	public Registro(String bloco, String registro, String desc) {
        super("", true, true);
		this.bloco = bloco;
		this.registro = registro;
        this.descricao = desc;        
	}

	public String getBloco() {
		return bloco;
	}

	public void setBloco(String bloco) {
		this.bloco = bloco;
	}

	public String getRegistro() {
		return registro;
	}

	public void setRegistro(String registro) {
		this.registro = registro;
	}

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
}

Objeto que compõe a JTtree e extende Nodo

package gui.util.treeModel;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jucélio Horácio Vieira
 */
public class Validacao extends Nodo implements Serializable{
    private static final long serialVersionUID = 1L;
    
	private String bloco;
    private String registro;
    private String validacao;    

    public Validacao(String bloco, String registro, String validacao) {
        super("", true, false);
        this.bloco = bloco;
        this.registro = registro;
        this.validacao = validacao;
    }

    public String getBloco() {
        return bloco;
    }

    public void setBloco(String bloco) {
        this.bloco = bloco;
    }

    public String getRegistro() {
        return registro;
    }

    public void setRegistro(String registro) {
        this.registro = registro;
    }

    public String getValidacao() {
        return validacao;
    }
    
    public void setValidacao(String validacao) {
        this.validacao = validacao;
    }       
}

Quando o campo longblob do banco estiver null então cria, senão carrega do banco

    private void carregaArvoreReg() throws IOException, ClassNotFoundException {        
        
        registros.clear();
        validacoes.clear();
        
        Set<String> setClasses = new HashSet<String>();
		setClasses.add("PisCofins/registros");

		Properties props = new Properties();
		InputStream in = this.getClass().getResourceAsStream("/regSpedPisCofins.xml");

		props.loadFromXML(in);               
        
        AvalErrosPrincipal erroPrin = (AvalErrosPrincipal) jC_historico.getSelectedItem();
        
        Registro regRoot = new Registro("Root","Root","Root");
        Registro regVal  = null; 
            
        if(erroPrin != null && erroPrin.getValidacaoTree() != null ){
            if(erroPrin.getRegistroTree() != null){
                ByteArrayInputStream bisReg = new ByteArrayInputStream(erroPrin.getRegistroTree());
                ObjectInputStream oisReg = new ObjectInputStream(bisReg);
                registros = (ArrayList<Registro>) oisReg.readObject();
            }else{
                registros = new ArrayList<Registro>();
            }
            
            if(erroPrin.getValidacaoTree() != null){
                ByteArrayInputStream bisVal = new ByteArrayInputStream(erroPrin.getValidacaoTree());
                ObjectInputStream oisVal = new ObjectInputStream(bisVal);
                validacoes = (ArrayList<Validacao>) oisVal.readObject();            
            }else{
                validacoes = new ArrayList<Validacao>();
            }
            
            for(Registro regPai: registros){

                String regNivel = props.getProperty("bloco"+regPai.getRegistro().substring(0, 1)+".reg"+regPai.getRegistro()+ ".nivel");
                if(regNivel != null && regNivel.trim().equals("0")){   
                    
                    regRoot.add(regPai);
                    
                }
            }    
            
        }else{

            registros = new ArrayList<Registro>();
            validacoes = new ArrayList<Validacao>();        

            for (Map.Entry<Object, Object> e : props.entrySet()){

                if(e.getKey().toString().startsWith("bloco") && 
                   e.getKey().toString().contains(".reg") && 
                   e.getKey().toString().contains(".desc")               
                ){				
                    registros.add(
                            new Registro(e.getKey().toString().substring(5, 6),
                                    e.getKey().toString().substring(10, 14),
                                    e.getValue().toString()));
                }			

                if(e.getKey().toString().startsWith("bloco") && 
                   e.getKey().toString().contains(".reg") && 
                   e.getKey().toString().contains(".val")               
                ){	

                    validacoes.add(
                            new Validacao(  e.getKey().toString().substring(5, 6),
                                            e.getKey().toString().substring(10, 14),
                                            e.getValue().toString()));

                }
            } 
            
            Collections.sort(registros, new ComparaRegistro<Registro>());
            Collections.sort(validacoes, new ComparaValidacao<Validacao>());

            List<Registro> registrosAux = new ArrayList<Registro>();
            for(Registro regPai: registros){

                regVal = new Registro(regPai.getRegistro().substring(0, 1), "#" + regPai.getRegistro(), "Validações");
                registrosAux.add(regVal);
                for(Validacao val : validacoes){
                    if(val.getRegistro().equals(regPai.getRegistro()) && val.getValidacao().contains("EFD")){
                        regVal.add(val);
                    }
                }

                regPai.add(regVal);

                for(Registro reg : registros){
                    String regPaiStr = props.getProperty("bloco"+reg.getRegistro().substring(0, 1)+".reg"+reg.getRegistro().substring(0, 4)+".regPai");

                    if(regPai.getRegistro().equals(regPaiStr)){
                        regPai.add(reg);
                    }
                }

                String regNivel = props.getProperty("bloco"+regPai.getRegistro().substring(0, 1)+".reg"+regPai.getRegistro()+ ".nivel");
                if(regNivel != null && regNivel.trim().equals("0")){   

                    regRoot.add(regPai);
                }
            }    
            registros.addAll(registrosAux);
        }
		
		modValidTree = new DefaultTreeModel(regRoot);
        jTree1.setModel(modValidTree);
        
        jTree1.putClientProperty("JTree.lineStyle", "Angled");
        jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);

        jTree1.expandRow(0);
        jTree1.expandRow(jTree1.getRowCount()-1);
    }

Salva as listas atuais nos campos LONGBLOB do banco MySql

int countValChecked = 0;
        for(gui.util.treeModel.Validacao valTree: validacoes){
			if(valTree.isSelected() && !valTree.getRegistro().contains("#")){
				countValChecked+=1;
			}
		}
        
        principal.setValidAtuais(countValChecked);
        
        ObjectOutputStream oosReg = null;
        ObjectOutputStream oosVal = null;
        try {
            ByteArrayOutputStream bosReg = new ByteArrayOutputStream();
            oosReg = new ObjectOutputStream(bosReg);
            oosReg.writeObject(registros);                    
            principal.setRegistroTree(bosReg.toByteArray());
            
            ByteArrayOutputStream bosVal = new ByteArrayOutputStream();
            oosVal = new ObjectOutputStream(bosVal);
            oosVal.writeObject(validacoes);                    
            principal.setValidacaoTree(bosVal.toByteArray());
        
        } catch (IOException ex) {
            Logger.getLogger(AvalArqSPEDPisCofins.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                oosReg.close();
                oosVal.close();
            } catch (IOException ex) {
                Logger.getLogger(AvalArqSPEDPisCofins.class.getName()).log(Level.SEVERE, null, ex);
            }
        }