Gleidson Henrique:
Amigo, isso está acontecendo porque o ‘id’ 3 já está cadastrado. Se você colocasse o id 4 iria normal.
O que te aconselho, caso nao tenha importância é: tirar o campo id na tela e deixar o hibernate gera-lo sozinho. Dessa maneira, os campos não serão duplicados.
Outra coisa, vamos supor que você não queira deixar dois logins ‘admins’ iguais. Ai você terá que definir essa coluna como primary key.
Porém, o que deve ser pensado também é que cadastrar um usuário não é tao essencial quanto cadastrar um cliente. Clientes ocorrem bem mais erros do que usuário. Vamos supor que seja um software comercial isso ai. A empresa pode ter 3 usuários, mas ela tem 5 mil clientes. Caso der algum erro, ela te contata e você dá o suporte a ela.
As vezes coisinhas simples assim, procuramos ir pelo caminho mais difícil, como o código que você fez rsrsrs
Abraços
Sim, sim. Entendi o que tu quis dizer.
Mas não foi isso que eu perguntei. A minha duvida era no tratamento da exceção. A minha key 3, nesse caso, é a coluna de login no meu DB.
Ela é uma Unique Key, e por esse motivo, não se repete. Mas, no momento que o usuário tentar cadastrar um login que já exista no DB, eu quero apresentar uma mensagem de erro para ele informando que aquele login ja está em uso, ou um CPF já está cadastrado, ou uma matrícula também ja está cadastrada. Como a exceção gerada pelo hibernate não é diferente para cada coluna, eu não teria como trata-la separadamente. O código que postei foi uma solução para saber em qual coluna do DB houve a exceção de duplicidade e, utilizando essa informação, poderei tratar separadamente cada exceção.
Mas obrigado pela resposta 