Consulta não retorna todos os dados [Resolvido]

9 respostas Resolvido
java
pellegrini2106

Ola amigos estou com problema tenho uma consulta que carrega somente a herança mais a parte que pega a tabela contato que esta ligada a classe pessoa não carrega seus dados.
Quando faço a consulta ela só pega os dados da classe pai e a filho mas da classe Contato que esta ligado a classe pessoa não retorna. como resolvo isso? olha o código.

public class Pessoa {

private int id_pessoa;
private String cep;
private String logradouro;
private String numero;
private String complemento;
private String bairro;
private String cidade;
private String uf;

}
public class pessoaFisica extends Pessoa {

private String cpf;
private String nome;
private String dataNasc;
private String rg;
private String orgemissor;
private String uforgE;
private String dataEmissao;

}
public class pessoaJuridica extends Pessoa {

private String cnpj;
private String razaosocial;
private String inscestadual;
private String inscmunicipal;

}
public class Contato {

private String telefonePri;
private String telefoneSec;
private String celularPri;
private String celularSec;
private String whatsAppPri;
private String whatsAppSec;
private String emailPri;
private String emailSec;
private Pessoa p; // Objeto que pega a classe Pessoa.

}

// consulta da camada daoPessoaFisica.

@Override
public ArrayList consultarPF(String cpf) {

ArrayList<pessoaFisica> lstPF = new ArrayList();

    try {
        sql = "SELECT * FROM pessoa INNER JOIN pessoafisica ON pessoafisica.id_pessoa = pessoa.id_pessoa INNER JOIN contato ON contato.id_pessoa = pessoafisica.id_pessoa AND pessoafisica.cpf=?";

        pst = cnx.getConnection().prepareStatement(sql);
        pst.setString(1, cpf);
        rs = pst.executeQuery();

        while (rs.next()) {

            pessoaFisica pf = new pessoaFisica();

            pf.setId_pessoa(rs.getInt("id_pessoa"));
            pf.setCpf(rs.getString("cpf"));
            pf.setNome(rs.getString("nome"));
            pf.setDataNasc(rs.getString("data_nasc"));
            pf.setRg(rs.getString("rg"));
            pf.setOrgemissor(rs.getString("orgEmissor"));
            pf.setUforgE(rs.getString("uf_orgE"));
            pf.setDataEmissao(rs.getString("data_emissao"));
            pf.setCep(rs.getString("cep"));
            pf.setLogradouro(rs.getString("logradouro"));
            pf.setNumero(rs.getString("numero"));
            pf.setComplemento(rs.getString("complemento"));
            pf.setBairro(rs.getString("bairro"));
            pf.setCidade(rs.getString("cidade"));
            pf.setUf(rs.getString("uf"));

            Contato c = new Contato(); 
           
            c.setTelefonePri(rs.getString("telefonePri"));
            c.setTelefoneSec(rs.getString("telefoneSec"));
            c.setCelularPri(rs.getString("celularPri"));
            c.setCelularSec(rs.getString("celularSec"));
            c.setWhatsAppPri(rs.getString("whatsAppPri"));
            c.setWhatsAppSec(rs.getString("whatsAppSec"));
            c.setEmailPri(rs.getString("emailPri"));
            c.setEmailSec(rs.getString("emailSec"));
            c.setP(pf);
            lstPF.add(pf);
        }
        pst.close();
        rs.close();
        return lstPF;

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

// VISÃO QUE FAZ A CONSULTA POR CPF.

private void btnprocuraActionPerformed(java.awt.event.ActionEvent evt) {

if (!v.validaCPF(txtcpf.getText().replace(".", "").replace("-", ""))) {
        JOptionPane.showMessageDialog(null, "CAMPO CPF EM BRANCO OU INVÁLIDO POR FAVOR REDIGITE NOVAMENTE!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setValue(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();
    } else if (daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", "")).isEmpty()) {
        JOptionPane.showMessageDialog(null, "CONSULTA NÃO ENCONTADA!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setText(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();

    } else {

        this.habilitaTudo();

        for (pessoaFisica pf : daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", ""))) {

            //Dados Pessoais da Pessoa Fisica.
            id = String.valueOf(pf.getId_pessoa());
            txtnome.setText(pf.getNome());
            dataNasc.setDate(Date.valueOf(pf.getDataNasc()));
            txtrg.setText(pf.getRg());
            txtorgemissor.setText(pf.getOrgemissor());
            txtuf_orgE.setText(pf.getUforgE());
            dataEmissao.setDate(Date.valueOf(pf.getDataEmissao()));

            //Dados de Localização da Pessoa Fisica.
            txtcep.setText(pf.getCep());
            txtlogradouro.setText(pf.getLogradouro());
            txtnro.setText(pf.getNumero());
            txtcomplemento.setText(pf.getComplemento());
            txtbairro.setText(pf.getBairro());
            txtcidade.setText(pf.getCidade());
            txtuf.setText(pf.getUf());
            
            //Dados dos Contatos da Pessoa Fisica. -> AQUI QUE ESTA O ERRO NÃO CARREGA A CONSULTA NESTA PARTE.
            txtTelPri.setText(c.getTelefonePri());
            txtTelSec.setText(c.getTelefoneSec());
            txtCelPri.setText(c.getCelularPri());
            txtCelSec.setText(c.getCelularSec());
            txtWSPri.setText(c.getWhatsAppPri());
            txtWSSec.setText(c.getWhatsAppSec());
            txtEmailP.setText(c.getEmailPri());
            txtEmailS.setText(c.getEmailSec());
            c.setP(pf);
        }
    }

}

9 Respostas

SkyG0D

Boa noite, com o modificador de acesso private você só tem acesso na própria classe, logo seus filhos não herdam os atributos ou métodos definidos como private.

Mais sobre modificadores de acesso.

OBS: Lembrando que classes sempre devem começar com letras maiúsculas e seguir o padrão CamelCase.

pellegrini2106

SkyGOD eu sei não coloquei os gets e sets para não deixar o codigo extenso de mais aqui no Forum ok!!!

SkyG0D

Ah sim, desculpa.

Não deveria ser um ArrayList de contatos? Já que a classe Contato tem uma pessoa, mas a classe Pessoa não sabe nem da existência da classe Contato.

Nesse caso o contato não esta fazendo nada?

ArrayList<pessoaFisica> lstPF = new ArrayList();

            // resto do código...

            Contato c = new Contato(); 
           
            c.setTelefonePri(rs.getString("telefonePri"));
            c.setTelefoneSec(rs.getString("telefoneSec"));
            c.setCelularPri(rs.getString("celularPri"));
            c.setCelularSec(rs.getString("celularSec"));
            c.setWhatsAppPri(rs.getString("whatsAppPri"));
            c.setWhatsAppSec(rs.getString("whatsAppSec"));
            c.setEmailPri(rs.getString("emailPri"));
            c.setEmailSec(rs.getString("emailSec"));
            c.setP(pf);
            lstPF.add(pf);
        }

E de onde vem essa variável c?

//Dados dos Contatos da Pessoa Fisica. -> AQUI QUE ESTA O ERRO NÃO CARREGA A CONSULTA NESTA PARTE.
            txtTelPri.setText(c.getTelefonePri());
            txtTelSec.setText(c.getTelefoneSec());
            txtCelPri.setText(c.getCelularPri());
            txtCelSec.setText(c.getCelularSec());
            txtWSPri.setText(c.getWhatsAppPri());
            txtWSSec.setText(c.getWhatsAppSec());
            txtEmailP.setText(c.getEmailPri());
            txtEmailS.setText(c.getEmailSec());
            c.setP(pf);
pellegrini2106

Esse C e uma instancia da Classe Contato que tem por sua vez um Objeto chamado Pessoa dentro da sua classe que encapsula o objeto pf da classe Pessoa Fisica. E representada por uma associação um para um.
Veja minhas Classes que descrevi a cima.

pmlm

Mas como indicado, o objecto Pessoa não tem qualquer relação com Contacto, apenas o contrário. Retornas uma lista de pessoas mas não tens como obter o contacto a partir de uma Pessoa.

pellegrini2106

pmlm olha meu diagrama de classe amigo.

Na minha consulta ele pega somente as partes da classe pai e filho mas o q esta ligado a classe pai que é a classe contato ele não carrega nada.
Queria tambem na consulta do sql trazer os dados da tabela contatos.

pmlm

No SQL estás a trazer os dados da tabela Contatos. Mas depois essa entidade não é referenciada pelo teu objecto Pessoa e o que tu devolves na tua consulta é uma lista de pessoas.

Contato c = new Contato();
c.setTelefonePri(rs.getString(telefonePri));

c.setTelefoneSec(rs.getString(telefoneSec));

c.setCelularPri(rs.getString(celularPri));

c.setCelularSec(rs.getString(celularSec));

c.setWhatsAppPri(rs.getString(whatsAppPri));

c.setWhatsAppSec(rs.getString(whatsAppSec));

c.setEmailPri(rs.getString(emailPri));

c.setEmailSec(rs.getString(emailSec));

c.setP(pf);

Este Contato c é criado e tem dados mas depois não estás a guardar em lado nenhum.

Quando depois tentas acedea c no teu actionperformed essa variavel não existe uma vez que o scope já é completamente diferente. Para manter a lógica que tens, o teu contato tem de ir dentro de pessoa e não o contrário.

pellegrini2106

pmlm então o objeto contato deve estar dentro da classe pessoa e não ao contrario objeto pessoa dentro da classe contato e isso? mas tambem eu fiz isso e nao deu certo? pode me esclarecer?

pellegrini2106
Solucao aceita

Consegui poxa amigo pmlm não sei como te agradecer pela ajuda de bom grado que você me cedeu, mas uma vez fico grato pela ajuda.
Abraço amigo!!!

Olha o codigo como ficou.

private void btnprocuraActionPerformed(java.awt.event.ActionEvent evt) {

if (!v.validaCPF(txtcpf.getText().replace(".", "").replace("-", ""))) {
        JOptionPane.showMessageDialog(null, "CAMPO CPF EM BRANCO OU INVÁLIDO POR FAVOR REDIGITE NOVAMENTE!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setValue(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();
    } else if (daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", "")).isEmpty()) {
        JOptionPane.showMessageDialog(null, "CONSULTA NÃO ENCONTADA!!!", "MENSAGEM:", JOptionPane.ERROR_MESSAGE, new ImageIcon(getToolkit().createImage(getClass().getResource("/icones/iconeCancela.png"))));
        txtcpf.setText(null);
        txtcpf.requestFocus();
        this.limparCampos();
        this.desabilitaTudo();

    } else {

        this.habilitaTudo();

        for (pessoaFisica pf : daoPF.consultarPF(txtcpf.getText().replace(".", "").replace("-", ""))) {

            //Dados Pessoais da Pessoa Fisica.
            id = String.valueOf(pf.getId_pessoa());
            txtnome.setText(pf.getNome());
            dataNasc.setDate(Date.valueOf(pf.getDataNasc()));
            txtrg.setText(pf.getRg());
            txtorgemissor.setText(pf.getOrgemissor());
            txtuf_orgE.setText(pf.getUforgE());
            dataEmissao.setDate(Date.valueOf(pf.getDataEmissao()));

            //Dados de Localização da Pessoa Fisica.
            txtcep.setText(pf.getCep());
            txtlogradouro.setText(pf.getLogradouro());
            txtnro.setText(pf.getNumero());
            txtcomplemento.setText(pf.getComplemento());
            txtbairro.setText(pf.getBairro());
            txtcidade.setText(pf.getCidade());
            txtuf.setText(pf.getUf());
                            
            //Dados dos Contatos da Pessoa Fisica.
            
            txtTelPri.setText(pf.getC().getTelefonePri());
            txtTelSec.setText(pf.getC().getTelefoneSec());
            txtCelPri.setText(pf.getC().getCelularPri());
            txtCelSec.setText(pf.getC().getCelularSec());
            txtWSPri.setText(pf.getC().getWhatsAppPri());
            txtWSSec.setText(pf.getC().getWhatsAppSec());
            txtEmailP.setText(pf.getC().getEmailPri());
            txtEmailS.setText(pf.getC().getEmailSec());                
        }
    }

}
Criado 31 de julho de 2020
Ultima resposta 5 de ago. de 2020
Respostas 9
Participantes 3