Hibernate não salva zero a esquerda

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 00522211158), ele salva essa sequencua sem os dois zeros iniciais, que são muito importantes, pois sao de CPF.
Alguem sabe porque isso acontece?

Action:

[code] 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();
        }
    }[/code]

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

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.

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

yep

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?

[quote=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?[/quote]

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