Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

_Isis_

Hibernate Validator - CPF não formatado

Recommended Posts

Estou mexendo um pouco com o Hibernate e mesmo sendo uma aplicação "de brinquedo" acabei empacando nos validators.
Baixei o Hibernate Validator 6.0.2Final e estou tentando utilizar o @CPF (que foi incluído no Hibernate Validator) num atributo String do modelo.
Eu importo um arquivo XML e na hora de salvar o validator diz que o CPF é inválido (apenas formato). Procurando na internet vi uns bug reports sobre o @CPF aceitar somente o número formatado, com os separadores, e não aceitar uma string de dígitos apenas. Mas isso, pelo que os comentários indicavam, acontecia na versão 5 e os bug reports foram dados como fechados.
Aí resolvi alterar o formato do CPF que eu estava importando p/ incluir os separadores. Funciona tudo certinho.
Ao invés de me dar por feliz resolvi baixar o fonte do Hibernate Validator e fuçar na classe org.hibernate.validator.constraints.br.CPF. E está lá o pattern com 11 dígitos, sem formatação:

@Pattern.List({
		@Pattern(regexp = "([0-9]{3}[.]?[0-9]{3}[.]?[0-9]{3}-[0-9]{2})|([0-9]{11})"),
		// XXX.XXX.XXX-XX where X is always the same digit are not a valid CPFs, but all of them passes the mod check. Needs to be singled out each one via regexp
		@Pattern(regexp = "^(?:(?!000\\.?000\\.?000-?00).)*$"),
		@Pattern(regexp = "^(?:(?!111\\.?111\\.?111-?11).)*$"),
		@Pattern(regexp = "^(?:(?!222\\.?222\\.?222-?22).)*$"),
		@Pattern(regexp = "^(?:(?!333\\.?333\\.?333-?33).)*$"),
		@Pattern(regexp = "^(?:(?!444\\.?444\\.?444-?44).)*$"),
		@Pattern(regexp = "^(?:(?!555\\.?555\\.?555-?55).)*$"),
		@Pattern(regexp = "^(?:(?!666\\.?666\\.?666-?66).)*$"),
		@Pattern(regexp = "^(?:(?!777\\.?777\\.?777-?77).)*$"),
		@Pattern(regexp = "^(?:(?!888\\.?888\\.?888-?88).)*$"),
		@Pattern(regexp = "^(?:(?!999\\.?999\\.?999-?99).)*$")
})

Já verifiquei no depurador se não tem um espaço em branco perdido na string quando o handler monta o objeto a partir do XML (não tem. Está certo) e continuo sem saber porque esse negócio não aceita CPF não formatado. Alguém já passou por isso e conseguiu resolver?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por aredienhcs
      Salve!
       
      Me deparei com uma inconsistência hoje nos validadores do Laravel. O caso é que se eu construir um FormRequest devolvendo no método rules() a seguinte regra:
      ['logradouro' => 'string|min:5'] passando o valor '' (aspas simples ) para o campo logradouro, o valor é validado corretamente, devolvendo a inconsistência com a regra de 5 caracteres.
      Porém quando eu crio um validador desta outra forma:
      $dados = [ [ 'logradouro' => ''] ]; $regras = [ ['logradouro' => 'string|min:5'] ]; $v = Validator::make( $dados, $regras); dd( $v->fails()); A mesma regra passa batida pelo validador, retornando 'false' no 'fails( )' do validador. Gostaria de entender porque existe essa diferença entre os dois métodos de validação, e sem tem alguma forma de corrigir esse comportamento.
      Se for preciso mais informações a respeito posso exemplificar melhor.
       
      []s
    • Por manoveio1
      Gostaria de gravar uma sequencia numérica no banco de dados.
      Exemplo:
      No programa tem um campo onde o usuário vai informar o numero inicial :
      Informe o numero inicial: 200
      Outro campo pede quantidade gerada a partir desse numero informado:
      Informe a quantidade a ser gerada: 50
      Um botão: Gerar
      A partir dai o programa tem que gerar os 50 numero a partir do numero informado e gava los em um banco de dados: 200-201-203…ate 249.
      Como fazer?
    • Por MarKteus
      Olá

      Estou enfrentando um problema bem chato com Java aqui em meu projetos, vejam:
      2019-02-01 08:57:06.469 ERROR 18120 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause com.microsoft.sqlserver.jdbc.SQLServerException: Nome de objeto 'db_mybank.dbo.edification' inválido.     at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:259) ~[mssql-jdbc-6.4.0.jre8.jar:na] Percebam que ali no nome do objeto está sendo inserido um underline ou underscore como queiram, porém esse traço não é para ser exibido a inserção do mesmo faz com que o objeto não seja encontrado, o pior é que na especificação da classe está correto vejam:
       
      import javax.persistence.Table; @Entity @Table(name = "tbedification", schema = "dbo", catalog = "dbmybank") public class edification implements Serializable { /** * Alguém consegue me ajuda com isso, acho que o hibernate está "zuando" alguma coisa

      Estou usando a ide Eclipse Neon e SpringBoot
    • Por MarKteus
      Olá amigos
       
      Estou tentando gerando uma consulta usando @query que me traga o resultado de 3 tables SQL Server, porém o Hibernate alega que uma das propriedades não pode ser resolvida, contudo já verifiquei e a tal propriedade foi criada normalmente nas classes de entidades.
       
      O erro é nomedacoluna não pode ser resolvido, a coluna em questã é OccId

      Cabeçalho da classe
      @Entity
      @Table(name = "tabela", schema = "dbo", catalog = "dbtabela")
      public class OccurrenceChangeCancelLog implements Serializable {

      corpo e atributo que da o erro:
          private Integer OccId;

      construtor
          public OccurrenceChangeCancelLog(Integer occId) {
              this.OccId = occId;

          }

      Get e Set:
          @Column(name = "OcorrId")
          public Integer getIntOcorrId() {
              return this.OccId;
          }
          public void setIntOcorrId(Integer occId) {
              this.OccId = OcorrId;
          }

      @Query("select distinct oc.campos1,  mlt.campo2 "
                  + "from Occurre oc INNER JOIN "
                  + "OccurrenceChangeCancelLog mlt ON mlt.OccId = oc.OccurreId "
                  + "where mlt.dataLog >= :dtaLogOne AND mlt.dataLog <= :dtaLogTwo ")


      Alguém sabe o que pode ser?
    • Por MarKteus
      Olá amigos
       
      Estou tentando gerando uma consulta usando @query que me traga o resultado de 3 tables SQL Server, porém o Hibernate alega que uma das propriedades não pode ser resolvida, contudo já verifiquei e a tal propriedade foi criada normalmente nas classes de entidades
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.