Tratamento de erro NullPointerException no Hibernate [Resolvido]

3 respostas
F

Oi gente, estou com um pequeno problema na minha aplicação.

Estou tentando puxar um resultado do banco de dados usando o seguinte codigo abaixo

Session sessao = CriadorDeSessaoNovo.getSession(); //seleciona cidade baseada no id Hist_Formacao_Religiosa listagem_query = (Hist_Formacao_Religiosa) sessao.get(Hist_Formacao_Religiosa.class, new Integer(4)); if(listagem_query.getCidade().getCid_id()==null){ System.out.println(listagem_query.getCidade().getCid_nom()+""); }

Tenho uma ligação de uma tabela chamada “Hist_Formacao_Religiosa” com outra tabela chamada “Cidade”, quando a cidade é preenchida no formulario de cadastro, o codigo funciona normalmente, porém o campo de cidade é um campo não-obrigatorio, ou seja, o usuario do sistema pode não preenche-lo, porem caso este campo não seja preenchido no formulario, ao rodar o codigo abaixo eu recebo um NullPointerException que faz sentido ja que não há nenhuma referencia da tabela, porém gostaria de tratar essa exceção sem ter q usar um try catch, seria possivel tratar essa exceção usando um ‘if’, eu tentei no codigo acima, mas nao deu certo, existe alguma outra maneira?

T+

3 Respostas

I
if(listagem_query.getCidade().getCid_id()==null){          
   System.out.println(listagem_query.getCidade().getCid_nom()+"");              
}

Se eu entendi bem o problema, o getCidade está retornando null e você está tentando dar um getCid_id nesse null…por isso lança a exception. Troca esse código ai por:

if(listagem_query.getCidade() == null){
   //Vai rolar uma exception nessa linha também...então imprime outra coisa          
   //System.out.println(listagem_query.getCidade().getCid_nom()+"");              
}
A

cara,

se no seu mapeamento vc definiu fetch com eager, entao vc vai ter que verificar se seus objetos são nulos, pois o metodo get retorna null caso ele nao encontre o resultado.
se no seu mapeamento vc definiu fetch com lazy, vc vai quer fazer uma hql ou criteria, para trazer o objeto cidade.

t+

F

A solução do ismaellg resolveu meu problema
Agradeço tanto a ismaellg quanto a alissonvla por ajudarem, obrigado

Criado 24 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 3
Participantes 3