Pessoal, como voces validam quando o campo é unique?
Eu to apanhando na questão da edição…
Pra adicionar um nome “José” por exemplo, eu verifico se já existe, se nao existir salva, senão mando uma FacesMessages…tranquilo!!!
Mas e pra editar? Supondo que eu tenha um cliente chamado “José” já cadastrado, e tente alterar o cliente “Maria” para “José”?
Eu tentei enviar uma FacesMessages caso caia na excessão, mas dá pau mesmo assim. Exemplo:
[code]public void buscarNome() {
query = entityManager.createQuery("" +
"select c from Cliente c " +
“where c.nome = :nome”)
.setParameter(“nome”, cliente.getNome());
}
public String salvarCliente() {
buscarNome();
// se cliente não existir (insert)
if (cliente.getClienteId() == null) {
// se existir cliente com o nome digitado
if(query.getResultList().size() == 0) {
entityManager.persist(cliente);
} else {
FacesMessages.instance().add(“Já existe um Cliente com o nome #{cliente.nome}.”);
return null;
}
// se cliente já existir (update)
} else {
try {
entityManager.merge(cliente);
} catch (ConstraintViolationException c) {
FacesMessages.instance().add(“Já existe um Cliente com o nome #{cliente.nome}.”);
return null;
}
}
listarClientes();
return “salvarCliente”;
}[/code]
Lembrando que não quero fazer nenhum validador incrementado
Abraços!!