Como fazer uma verificação antes de salvar no banco, usando VRaptor e Hibernate

5 respostas Resolvido
java
gtalkSP

Bom dia pessoal.

Gostaria de uma ajuda.

Tenho um formulário onde o usuário digita o CPF para ser cadastrado no sistema.

Meu banco não aceita dados duplicados. Queria fazer um método que quando o usuário digitasse o CPF, fizesse uma consulta e informasse se o CPF já existe no banco ou não.

Meu Dao está assim:

public List<Usuario> cpfJaCadastrado(String q) {
        Criteria criteria = session.createCriteria(Usuario.class);
       .......... daqui pra frente não sei oque colocar...

    }

Ai no meu controller eu usaria json? Oque me sugerem?

@Get("/usuario/verificaCpf")
    @Acesso({TipoPerfil.ADMINISTRADOR, TipoPerfil.ATENDENTE, TipoPerfil.DENTISTA})
    public void cpfCnpjJaExiste(String q) {
        result.use(json()).withoutRoot().from(daoFactory.getUsuarioDao().cpfJaCadastrado(q))               
                .serialize();        
    }

Poderiam me ajudar nessa situação, estou bem perdida nisso.

5 Respostas

P

Você não poderia deixar o usuário informar o CPF, se realmente existir no banco, você tratar a exceção?

gtalkSP

Queria apenas que ao digitar o CPF a função change do jquery usando ajax retornasse true ou false. Ai eu pegaria esse retorno e apresento para o usuario que esse dado já existe no BD. Achei exemplo para PHP…mas java nada com DAO Hibernate,

E
Solucao aceita

Olá amiga @gtalkSP . Faz assim:

String sqlCount = "select count(*) from SUA_TABELA where cpf =" + "'"+q+"'";      
         BigInteger count = (BigInteger) session.createSQLQuery(sqlCount).uniqueResult();
          
         String resposta = "";
         if (count.equals(BigInteger.ZERO)){
             resposta = "Ok";             
         }else
             resposta = "Erro: Este CPF já está cadastrado";         
        return resposta;

Aí é só colocar um include no seu controller e trabalhar a mensagem para o usuário.

Abç

peczenyj

existe um tipo de verificação pre-submit do formulario, tipo ‘este username ja existe’

o que se faz é criar um serviço que verifica se este dado ja existe ou não ( tipo retorna 200 ok ou 404 not found ).

isso ajuda ao cara não ter que ficar escrevendo tudo de novo. mas pode ser que ocorra um ‘race-condition’ e duas pessoas tentam usar o mesmo dado. ai vc precisa ser redundante na sua investigação.

crie um servicinho rest simples pra ajudar a usa user-experience

gtalkSP

Obrigado @exercitobr . Era exatamente essa a ideia. Fiz um teste aqui e funcionou corretamente. Vou seguir sua sugestão no controller.

Mais uma vez obrigada pela resposta precisa e satisfatória.

Grata

Criado 4 de novembro de 2016
Ultima resposta 8 de nov. de 2016
Respostas 5
Participantes 4