Jtree com BD

Boa tarde Pessoal.

Estou montando uma Jtree a partir de um banco de dados. Até a parte de montagem tudo ok, mas na seleção de algum item na árvore, eu consigo pegar apenas a String e os diretórios pai dos itens da arvore, e oque eu precisava era que eu pudesse inserir uma ArrayList de objetos, para que na hora da consulta eu pudesse pegar qualquer um dos campos que está no banco de dados, e não apenas oque está sendo apresentado na arvore. Para explicar melhor, no meu banco de dados eu tenho uma tabela cliente, onde tem id, nome, cnpf. Na arvore eu quero mostrar o nome, e quando o usuario selecionar esse item, eu consiga pegar o id. Alguém sabe se tem como passar uma ArrayList de Object no Jtree? Segue parte do código:

[code]DefaultMutableTreeNode Sistema = null;
DefaultMutableTreeNode Cliente = null;
DefaultMutableTreeNode Gate = null;
DefaultMutableTreeNode Cameras = null;
DefaultTreeModel modelo = null;
Gate gate;
GateJpaController controleGate;
ArrayList listaGate;
ClientesJpaController controleCliente;
ArrayList listaClientes;

public void PreencheTree() {

    Sistema = new DefaultMutableTreeNode("ICR");
    

    if (controleCliente == null) {
        controleCliente = new ClientesJpaController();
    }
    listaClientes = (ArrayList<Clientes>) controleCliente.findClientesEntities();

    for (int i = 0; i < listaClientes.size(); i++) {
        String cliente = listaClientes.get(i).getNome()+","+ listaClientes.get(i).getId().toString();
        String[] client = cliente.split(",");
        Cliente = new DefaultMutableTreeNode(cliente.substring(0, 10));
        Sistema.add(Cliente);
    }

    if (controleGate == null) {
        controleGate = new GateJpaController();
    }
    listaGate = (ArrayList<Gate>) controleGate.findGateEntities();

    CameraJpaController controleCamera = new CameraJpaController();
    ArrayList<Camera> listaCamera = new ArrayList<Camera>();
    if (controleCamera == null) {
        controleCamera = new CameraJpaController();
    }
    listaCamera = (ArrayList<Camera>) controleCamera.findCameraEntities();

    for (int i = 0; i < listaGate.size(); i++) {
        Gate = new DefaultMutableTreeNode(listaGate.get(i).getDescricao());
        for (int j = 0; j < listaCamera.size(); j++) {
            if (listaCamera.get(j).getIdGate() == listaGate.get(i).getId()) {
                Cameras = new DefaultMutableTreeNode(listaCamera.get(j).getPosicao());
                Gate.add(Cameras);
            }
        }
        Cliente.add(Gate);
    }

    modelo = new DefaultTreeModel(Sistema);

}

[/code]

Aguardo, abraço