Problema com validação de campo unique

5 respostas
S

Bom dia, pessoal.
Estou com um problema que era pra ser simples, pelo menos pra mim.
É o seguinte: tenho um campo anotado como unique:

como fazer para que quando um usuário tentar infringir “unique” possa passar uma mensagem na tela?

@Column(name = "nr_decreto", nullable = false, unique = true)
	private BigInteger numero;

5 Respostas

Rodrigo_Sasaki

Eu não sei qual a exceção lançada, mas eu faria o seguinte,

tentaria gravar um valor repetido, e veria como isso é tratado e qual exceção é lançada, então a trataria.

EDIT: Dando uma lida, vi que aparentemente esse atributo da anotação só serve para quando você quer criar suas tabelas a partir das suas Entities, não creio que será usado para algum tipo de validação.

Fonte: https://community.jboss.org/thread/183114

S

Passa uma exceção padrão do Hibernate, mas a intenção era antes de persistir no banco, o usuário não obtivesse acesso à mensagem do hibernate, porém uma mensagem através do Faces Context.

Rodrigo_Sasaki

mas aí que ta… seria algo assim:catch(ExcecaoQueEuQuero e){ FacesContext.getCurrentInstance().addMessage("Sua Mensagem Aqui"); } entendeu? você não vai mostrar a mensagem da exceção do hibernate

Não lembro direito os parâmetros necessários pro método addMessage(), mas a idéia básica que eu quero passar é essa.

S

o.k.
vou tentar, isso deve ficar no ManagedBean?

Rodrigo_Sasaki

Isso, mas aí se você encapsula suas exceções em uma camada de negócio, tem que se atentar para qual exceção tratar.

Criado 24 de maio de 2012
Ultima resposta 24 de mai. de 2012
Respostas 5
Participantes 2