Oi gente, tenho uma aplicação com Hibernate e JSF 2, não uso os famosos DAOs(pois quando comecei, consegui usar apenas em aplicações desktops, mas na minha aplicação web nao consegui fazer funcionar.
tenho a seguinte duvida:
Tenho uma classe Pessoas mapeada pelo hibernate, ao mandar gravar um registro uso o seguinte codigo
public void gravar() {
try {
private Session sessao = CriadorDeSessaoNovo.getSession();
private Transaction tx = sessao.beginTransaction();
Estado obj_estado = new Estado();
obj_estado.setEst_id(est_id);
Cidade obj_cidade = new Cidade();
obj_cidade.setCid_id(getCid_id());
Pessoas obj_pes = new Pessoas();
if (getPes_id() != 0) {
obj_pes.setPes_id(pes_id);
}
obj_pes.setPes_bairro(AlteraLetras.retornaFrase(pes_bairro));
obj_pes.setPes_complemento((pes_complemento));
obj_pes.setPes_data_nascimento(pes_data_nascimento);
obj_pes.setPes_email_pessoal(pes_email_pessoal);
obj_pes.setPes_logradouro(AlteraLetras.retornaFrase(pes_logradouro));
obj_pes.setPes_prenome(AlteraLetras.retornaFrase(pes_prenome));
obj_pes.setPes_nome_meio(AlteraLetras.retornaFrase(pes_nome_meio));
obj_pes.setPes_sobrenome(AlteraLetras.retornaFrase(pes_sobrenome));
obj_pes.setPes_nom_completo((pes_prenome + " " + pes_nome_meio + " " + pes_sobrenome));
obj_pes.setPes_nome_italiano(pes_nome_italiano);
if (!getPes_nome_pais_origem().equals("")) {
obj_pes.setPes_nome_pais_origem(AlteraLetras.retornaFrase(pes_nome_pais_origem));
}
if(getPes_numero()!=0){
obj_pes.setPes_numero(pes_numero);
}
obj_pes.setPes_rg_num(pes_rg_num);
obj_pes.setPes_rg_expedidor((pes_rg_expedidor));
obj_pes.setPes_rg_dat(pes_rg_dat);
if(getPes_cpf() !=0){
obj_pes.setPes_cpf(pes_cpf);
}
if(getPes_cep()!=0){
obj_pes.setPes_cep(pes_cep);
}
if(getPes_telefone1()!=0){
obj_pes.setPes_telefone1(pes_telefone1);
}
if(getPes_telefone2()!=0){
obj_pes.setPes_telefone2(pes_telefone2);
}
if(getPes_telefone3()!=0){
obj_pes.setPes_telefone3(pes_telefone3);
}
obj_pes.setEstado(obj_estado);
obj_pes.setCidade(obj_cidade);
sessao.saveOrUpdate(obj_pes);
tx.commit();
sessao.close();
O meu problema pode ser visto melhor neste trecho de codigo
if(getPes_cpf() !=0){
obj_pes.setPes_cpf(pes_cpf);
}
if (!getPes_nome_pais_origem().equals("")) {
obj_pes.setPes_nome_pais_origem(AlteraLetras.retornaFrase(pes_nome_pais_origem));
}
tenho que verificar se o inteiro é igual a zero OU se a string é igual a “”, caso não passe no IF o registro não é setado,
caso eu tente fazer isso diretamente sem o if, ou seja
obj_pes.setPes_cpf(pes_cpf);
Ele seta o valor como 0 e não nulo, o mesmo acontece com o String, sei que tipos primitivos não podem ser nulos no caso do ‘int’, e por isso uso ‘Integer’, mas tenho que fazer esse if senão meu banco não é preenchido com null.
Alguém sabe como posso driblar isso?
T+