Fórum Associação Binaria com Banco de dados em Java #484945

08/07/2014

0

Ola,
Tenho uma classe unidade e outra policial, cada unidade deve ter um comandante(policial)
Eu fiz a associação binaria dessa forma
public class Unidade {
    private String CodUni;
    private String NomeUni;
    private String End;
    private int N;
    private Policial cmt = null;

....

public class Policial {
    
    private String Re;
    private String Qra;
    private String Nome;
    private String Posto;
.....




Meu Banco de dados se encontra dessa forma

create table `bdcia`.tbpolicial
(
    idpolicial INT not null primary key,
    Re VARCHAR(10) not null,
    Qra VARCHAR(45),
    Nome VARCHAR(100),
    PostoGraduacao VARCHAR(45)

)

create table `bdcia`.tbunidade
(
    CodUni VARCHAR(10) not null primary key,
    NomeUni VARCHAR(50),
    Endereco VARCHAR(150),
    N INT,
    ReCmt VARCHAR(10)
)


O problema esta quando vou carregar os objetos da unidade e policial

o metodo esta dessa forma

           public Unidade buscar(String CodUnidade) throws ClassNotFoundException{
    Unidade unidade = null;
    try{
        Connection conn = new Conexao().getconnection();
        String sql = "select * from tbunidade where CodUni = ?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setString(1, CodUnidade);
        ResultSet rs = ps.executeQuery();
        if(rs.next()){
            unidade = new Unidade(rs.getString("CodUni"),rs.getString("NomeUni"));
            unidade.setBairro(rs.getString("Bairro"));
            unidade.setCep(rs.getString("Cep"));
            unidade.setCidade(rs.getString("Cep"));
            unidade.setEnd(rs.getString("Endereco"));
            unidade.setN(rs.getInt("N"));
            unidade.setSede(rs.getBoolean("sede"));
            unidade.setTelefone(rs.getString("Telefone"));
            String Re = rs.getString("ReCmt");
            policial = new Policial();
            policial = daopolicial.buscar(Re);
            unidade.setCmt(policial);
            System.out.println("Nome comandante: "+unidade.getCmt().getNome());
        }
    }catch(SQLException ex) {
            Logger.getLogger(daoUnidades.class.getName()).log(Level.SEVERE, null, ex);
        }
    return unidade;
    }
}




O erro é de NullPointerException nas linhas

String Re = rs.getString("ReCmt");
policial = new Policial();
policial = daopolicial.buscar(Re);
unidade.setCmt(policial);

O problema é que o metodo funciona normalmente no cadastro de policial

segue código do método

public Policial buscar(String Re) throws ClassNotFoundException {
        Policial policial = null;
        try {
            Connection conn = new Conexao().getconnection();
            String sql = "select * from tbpolicial where Re=?";
            PreparedStatement ps;
            ps = conn.prepareStatement(sql);
            ps.setString(1, Re);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                String Qra = rs.getString("Qra");
                policial = new Policial(Re, Qra);
                policial.setNome(rs.getString("Nome"));
                policial.setPosto(rs.getString("PostoGraduacao"));
                policial.setEnd(rs.getString("Endereco"));

Michel Furtado.

Michel Furtado.

Responder

Posts

09/07/2014

Ronaldo Lanhellas

Bom, primeiro que não vi onde está declarada a variável "policial", você está instanciando sem declarar, mude:

De:
String Re = rs.getString("ReCmt");
            policial = new Policial();
            policial = daopolicial.buscar(Re);


Para:
String Re = rs.getString("ReCmt");
  Policial  policial = new Policial();
            policial = daopolicial.buscar(Re);


Outra coisa, é que não faz sentido nenhum você criar um objeto Policial e depois atribuir a esse objeto uma outra instancia de outro local. O mas correto seria:
String Re = rs.getString("ReCmt");
  Policial  policial = null;
            policial = daopolicial.buscar(Re);
if (policial == null) {
   throw new RuntimeException("O objeto policial é nulo, cheque o método daopolicial.buscar(Re)");
 }
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar