Verificar se já existe login salvo de um usuario no banco de dados

Estou desenvolvendo uma aplicação simples com cadastro de usuário, onde na minha entidade Usuario Mapeei meu atributo login como @NaturalID.Porém na validação do formulário na hora de salvar, e retornado um erro de chave duplicada.

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘cicinho1995’ for key ‘UK_fl3uvb053wjkjly059t4j7xjp’

Gostaria de tratar essa validaçao com uma mensagem do tipo growl ou message.

Alguém por gentileza poderia me ajudar nesse simples problema,que pra mim ta se tornando muito dificil achar uma solução.

Supondo que você possua um DAO para isso

try {
    loginDAO.logar(usuario);
} catch (Exception ex) {//Aqui você pode tratar a exceção específica, não necessariamente com Exception
    //Registra no log
    //Cria a mensagem para exibir no growl
}

olá Darlan. obrigado o responder.

tenho sim ,mais não seria exatamente isso , quero um comando que eu possa usar no meu método salvar,ou seja, antes de salvar o usuário verificar se já existe um login cadastrado …

Acho que é isso que você precisa (validator)

Segue o exemplo abaixo:

<p:outputLabel for="cpf" value="Cpf:"></p:outputLabel>
<p:inputMask id="cpf" mask="999.999.999-99" value="#{classe.cpf}" required="true">
	<f:validator validatorId="cpfValidator"/>
</p:inputMask>
@FacesValidator("cpfValidator")
public class CpfValidator implements Validator{

	@Inject
	private UsuarioService usuarioService;
	
	@Override
	public void validate(FacesContext arg0, UIComponent arg1, Object value) throws ValidatorException {
             String cpf = (String) value;
             ...
             if(usuarioService.findByCpf(cpf) != null)//Se encontrar
             {
                  			throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "O CPF informado ja está cadastrado!", null));

             }
    }
}
1 curtida

É por ai mesmo Mike.
Vou testar aqui pra ver se funciona…

Muito obrigado Mike, funcionou!!!

Que bom que deu certo :+1:

outra forma que encontrei que também funciona:

    session = HibernateUtil.getSessionFactory().openSession();
    String hql_1 = "from Usuario c where c.login = :login";

porém isso sendo feito dentro do bean.

está correto?

Você pode validar pelo bean também, mas prefiro usar validator devido ao ciclo de vida e também pq é muito pratico