Duvida em resolver uma igualdade

Senhores,
estou com o seguinte problema.
Tenho um cadastro de cidades, e neste cadastro os Atributos ID(Long), CodigoIBGE(int), Estado(um objeto do tipo estado) e Descrição(String).Quero comparar os dados inseridos com os dados em um banco de dados.Comparar a Descrição ta tranquilo.O problema se resume em comparar o CodigoIBGE que pego no banco de dados com o que o usuario digitou.Ja tentei de duas formas.Uma comparando com o TextFild.getText e outra forma comparando com o objeto que criei.Segue abaixo as duas maneiras que fiz.O codigo esta no inicio, por isso esta incompleto.

[size=18]Comparando com o Objeto criado[/size]

try{
        if (TxtDescricao.getText().equals("")) {
        JOptionPane.showMessageDialog(this, "Nome da Cidade não informada.Favor completa-lo" );
        }
        else{
            TxtDescricao.requestFocusInWindow();
            TxtCodigo.setText(null);
            TxtCodigo.setEnabled(false);
            SessionFactory sfac = new Configuration().configure().buildSessionFactory();
            Session se = sfac.openSession();
            Transaction tx = se.beginTransaction();
            Query sql = se.createQuery("from Cidade where Descricao = (?)").setString(0,TxtDescricao.getText().toUpperCase());
            Cidade teste = (Cidade) sql.uniqueResult();
            try{
                Cidade Novo = new Cidade();
                Novo.setDescricao(TxtDescricao.getText().toUpperCase());
                Novo.setCodigoIBGE(Integer.parseInt(TxtCodigoIBGE.getText()));
                Novo.setEstado((Estado)EscolhaEstado.getSelectedItem());

                try{

                    if((Novo.getDescricao().equals(teste.getDescricao()))
                            || (Novo.getCodigoIBGE().equals(teste.getCodigoIBGE()))){ // --------> aqui ocorre o erro....não sei como fazer essa comparação
                       JOptionPane.showMessageDialog
                               (this,"Nome da Cidade ou Código IBGE já existente.");

                    }
                }
                catch(Exception erro){

                }

            }
            catch(Exception erro){
                JOptionPane.showMessageDialog(this,"Dados inseridos incorretamentes.Insira-os corretamente!");
                TxtCodigoIBGE.setText(null);
                TxtCodigoIBGE.setText(null);
            }
        }
        }
    catch(Exception erro){

    }
    }

[size=18]Comparando com o jTextFild[/size]

    try{
        if (TxtDescricao.getText().equals("")) {
        JOptionPane.showMessageDialog(this, "Nome da Cidade não informada.Favor completa-lo" );
        }
        else{
            TxtDescricao.requestFocusInWindow();
            TxtCodigo.setText(null);
            TxtCodigo.setEnabled(false);
            SessionFactory sfac = new Configuration().configure().buildSessionFactory();
            Session se = sfac.openSession();
            Transaction tx = se.beginTransaction();
            Query sql = se.createQuery("from Cidade where Descricao = (?)").setString(0,TxtDescricao.getText().toUpperCase());
            Cidade teste = (Cidade) sql.uniqueResult();
            try{
                Cidade Novo = new Cidade();
                Novo.setDescricao(TxtDescricao.getText().toUpperCase());
                Novo.setCodigoIBGE(Integer.parseInt(TxtCodigoIBGE.getText()));
                Novo.setEstado((Estado)EscolhaEstado.getSelectedItem());

                try{

                    if((Novo.getDescricao().equals(teste.getDescricao()))
                            || (TxtCodigoIBGE.getText().equals(teste.getCodigoIBGE()))){  // --------> aqui ocorre o erro....não sei como fazer essa comparação
                       JOptionPane.showMessageDialog
                               (this,"Nome da Cidade ou Código IBGE já existente.");

                    }
                }
                catch(Exception erro){

                }

            }
            catch(Exception erro){
                JOptionPane.showMessageDialog(this,"Dados inseridos incorretamentes.Insira-os corretamente!");
                TxtCodigoIBGE.setText(null);
                TxtDescricao.setText(null);
            }
        }
        }
    catch(Exception erro){

    }

espero que alguem possa me ajudar…

obrigado

  1. Vá até seu primeiro post;

  2. Clique em editar;

  3. Coloque o código nas tags code:
    [code]
    Seu código aqui
    [/code]

[code]int codigoIbge = Integer.parseInt(TxtCodigoIBGE.getText());

if (codigoIbge == teste.getCodigoIBGE()) {
JOptionPane.showMessageDialog(this,“Nome da Cidade ou Código IBGE já existente.”);
}[/code]

Amigo…muito obrigado pelo toque do [code]…

fiz conforme vc me falou, porem continua com o mesmo erro…acho q o erro é no Or( || )…
pq quando testo apenas com a igualdade da cidade( Novo.getDescricao ) da certo…

muito obrigado pela ajuda…

se puder me ajudar mais, ficarei grato…

Continuando a minha resposta com a duvida, o erro que da é o seguinte:

java.lang.NullPointerException

Amigo, me ajude por favor!!!

NullPointerException significa que vc fez (intencionalmente ou não) o seguinte:

AlgumaClasse variavel = null;
variavel.algumMetodoNaoStatic(parametros);

Logo vc precisa ver a linha que isso acontece e testar com um debugger ou colocando um singelo if

if(variavel == null) System.out.println("passei pro aqui, variavel nula");

Pode acontecer o seguinte

xxx.AlgumMetodo(1,2,"sabado",null); /* o metodo nao sabe avaliar que o null é potencialmente perigoso */
double d = yyy.getAlgumaCoisaDouble(); /* se este metodo retorna Double, no java > 1.5 e retornar null, nao conseguira converter pra double / nativo */
zzz.alguma().cadeira().de().metodos(); /* e aqui algum deles retorna null e o proximo metodo ... */

boa sorte.

É possível que sua query não esteja retornando nenhum valor. O método uniqueResult() retorna nulo quando não há nenhum resultado.

http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/Criteria.html#uniqueResult%28%29

O erro esta ocorrendo na linha 23 das dois codigos que eu tentei fazer…

o problema é que naum estou conseguindo usar o atributo CodigoIBGE por ser int.Não sei qual é o problema…

me ajudem por favor!!!

Tente usar um depurador. Aparentemente sua variável teste está nula.

Você está fazendo uma busca usando um campo de descrição. Existe a possibilidade da sua busca não retornar dados se a descrição estiver com caracteres especiais e o se o banco não contém o mesmo tipo de codificação. É bem provável que o objeto null no seu código seja a variável teste.