Selectonemenu + dao

Ola a todos estou com a seguinte duvida tenho o seguinte metodo na DAO:

public ArrayList<Nome_Database> getNomeDB() throws SQLException, NamingException, ClassNotFoundException {
    con = H2_Connection.getConexao();
    ArrayList<Nome_Database> ndb = new ArrayList<>();
    ResultSet rs;
    try {
        pstm = con.prepareStatement("SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'TABELAS_INFO'");
        rs = pstm.executeQuery();
        while (rs.next()) {
            Nome_Database d_name = new Nome_Database();
            d_name.setNomeDB(rs.getString("TABLE_NAME"));

            ndb.add(d_name);
        }

        return ndb;
    } catch (JdbcSQLException e) {
        e.printStackTrace();
        return null;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return null;
    }
}

   public ArrayList<Empresa> getCaminhoBanco() throws SQLException, NamingException, ClassNotFoundException {
        con = H2_Connection.getConexao();
        ArrayList<Empresa> script = new ArrayList<>();
        ResultSet rs;
        try {
            pstm = con.prepareStatement("SELECT COLUMN_NAME FROM information_schema.columns WHERE table_schema = 'TABELAS_INFO';");
            rs = pstm.executeQuery();
            while (rs.next()) {
                Empresa caminho = new Empresa();
                caminho.setEmpresa(rs.getString("COLUMN_NAME"));

                script.add(caminho);
            }

        return script;
    } catch (JdbcSQLException e) {
        e.printStackTrace();
        return null;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return null;
    }
}

Que me devolve somente o nome das tabelas no banco e o outro que me devolve apenas o nome das colunas
e tenho este terceiro que desejo completar, que recebe o nome de uma tabela que foi encontrada pelo meu metodoDAO que lista o nome das tabelas e exibe o nome das colunas desta tabela

 public ArrayList<Empresa> getCaminhoEmpresa() throws SQLException, NamingException, ClassNotFoundException {
        ScriptControle controle = new ScriptControle();
        con = H2_Connection.getConexao();
        ArrayList<Empresa> script = new ArrayList<>();
        ResultSet rs;
        try {
            pstm = con.prepareStatement("SELECT COLUMN_NAME FROM information_schema.columns WHERE table_name = '"+COMPLETARAQUI +"';");
            rs = pstm.executeQuery();
            while (rs.next()) {
                Empresa caminho = new Empresa();
                caminho.setEmpresa(rs.getString("COLUMN_NAME"));

                script.add(caminho);
            }

            return script;
        } catch (JdbcSQLException e) {
            e.printStackTrace();
            return null;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

meus controles

public ArrayList<Nome_Database> selectedNomeDB_CB() throws SQLException, NamingException, ClassNotFoundException {

        return dao.getNomeDB();
    }

 public ArrayList<Empresa> selectedCaminhoEmpresa() throws SQLException, NamingException, ClassNotFoundException {

        return dao.getCaminhoEmpresa();
    }

e tenho o seguinte jsf:

<div class="f2">
                        <label class="title">&nbsp;&nbsp;NOME DA BASE&nbsp;&nbsp;</label><br></br><br></br>
                        <label class="fname">&nbsp;&nbsp;Nome: <p:inputText value="#{scriptControle.n_db.nomeDB}" required="true" />
                            <h:commandButton value ="SALVAR" class ="btnAction" action="#{scriptControle.addNomeBanco()}"/>
                            <br></br><br></br>
                            &nbsp;&nbsp;Bases:&nbsp;&nbsp;<h:selectOneMenu id="base" value="#{scriptExec.selectedBase}"  valueChangeListener="#{scriptControle.selectedCaminhoBanco_CB()}" >

                                    <f:selectItem itemLabel="Selecione" /> 
                                    <f:selectItems  value="#{scriptControle.selectedNomeDB_CB()}" />
                                    <f:ajax event="change" render="empresa" />  
                                </h:selectOneMenu>
                            <br></br><br></br>
                        </label>
                    </div>

                    <div class="f2">
                        <label class="title">&nbsp;&nbsp;NOME EMPRESA&nbsp;&nbsp;</label><br></br><br></br>
                        <label class="fname">&nbsp;&nbsp;Nome: <p:inputText value="#{scriptControle.n_emp.empresa}"   />
                            <br></br><br></br>
                            &nbsp;&nbsp;Empresas:&nbsp;&nbsp;<h:selectOneMenu id="empresa" value="#{scriptExec.selectedEmpresa}"  valueChangeListener="#{scriptControle.selectedCaminhoDB_CB()}">
                                    <f:selectItem itemLabel="Selecione" /> 
                                    <f:selectItems value="#{scriptControle.selectedCaminhoEmpresa()}" />
                                    <f:ajax event="change" render="database" />  
                                </h:selectOneMenu>
                            <br></br><br></br>
                        </label>
                    </div>

meu problema é que quero, selecionar uma base no meu selectOneMenu e quando selecionar a base o outro selectedOneMenu seja populado com o resultado da consulta da minha TERCEIRA DAO LISTADA ACIMA que na consulta receba como parametro o nome da base selecionada no primeiro selectOneMenu se alguém puder ajudar fico grato