Hibernate não salva zero a esquerda

5 respostas
J

Pessoal,

Estou com alguns problemas na hora de perssitir o CPF do meu usuario, usando HIBERNATE + MySQL, estranhamente ele retira o zero a esquerda do cpf e salva a aprtir do primeiro numero diferente de zero, (se eu digitar [telefone removido]), ele salva essa sequencua sem os dois zeros iniciais, que são muito importantes, pois sao de CPF.
Alguem sabe porque isso acontece?

Action:
usuario.setNome(usuarioForm.getNome());
        usuario.setCpf(usuarioForm.getCpf());
        usuario.setSexo(usuarioForm.getSexo());
        usuario.setDataNascimento(usuarioForm.getNascimento());
        usuario.setTelResidencial(usuarioForm.getDddResidencial()+usuarioForm.getTelResidencial());
        usuario.setTelComercial(usuarioForm.getDddComercial()+usuarioForm.getTelComercial());
        usuario.setCelular(usuarioForm.getDddCelular()+usuarioForm.getCelular());
        usuario.setEmail(usuarioForm.getEmail());
 GenericDAO pfDao = new GenericDAO(session, Usuario.class);

        if (acao.equals("incluir"))
        {            
            try
            {
                pfDao.salvar(usuario);
                transaction.commit();
                retorno = "usuarioCadastrado";
            }
            catch (Exception e)
            {
                transaction.rollback();
                e.printStackTrace();
                retorno = "erroCadatrarUsuario";
            }
            finally
            {
                session.close();
            }
        }

A minha tabela possui um campo cpf do tipo int, se eu colocar varchar tambem acontece isso

5 Respostas

G

Se o campo na classe Java for int ou qualquer outro numérico de nada adianta você alterar o banco para varchar, pois nos tipos numéricos não existe 02, e sim 2.

O ideal é usar o CPF como String/varchar ou então um tiny-type/varchar.

J

Entendi, então é melhor eu colocar na minha classe CPF como String e no Bd varchar?

L

yep

J

Valeu

Só mais uma dúvida: por que se eu coloco o tipo como int no BD, ele sempre limita para 10 esse campo, e se eu digitar mais que dez numeros não salva, e se eu alterar esse campo para int(11) nao faz diferença?

G

JeffersonJCosta:
Valeu

Só mais uma dúvida: por que se eu coloco o tipo como int no BD, ele sempre limita para 10 esse campo, e se eu digitar mais que dez numeros não salva, e se eu alterar esse campo para int(11) nao faz diferença?

Nesse caso você precisa usar Long no Java caso queria maiores que 10 digitos. O valor máximo de um Integer é 21xxxxxxxx.

Criado 23 de abril de 2010
Ultima resposta 23 de abr. de 2010
Respostas 5
Participantes 3