[Resolvido] Vraptor + Spring + hibernate Tratamento de exception

Bom dia,

Estou criando um projeto com vraptor + Spring + hibernate… esta tudo configurado e rodando…
mas tenho um campo unique que pelo que vi o Validator do Vraptor não funciona.

@Post(value = "/importarPasta/{objetoId}")  
public void importar(String objetoId) {  
    Objeto objeto= objetoService.buscaObjeto(objetoId);  
    if (objeto== null) {  
        result.use(Results.http()).setStatusCode(404);  
    } else {  
        validator.validate(objeto);  
        validator.onErrorUse(Results.json()).from(validator).include("errors").serialize();  
        objetoService.inserir(objeto);  
        result.use(Results.json()).from(objeto).serialize();  
    }  
       }  

Quando importo um objeto com id que ainda não importei funciona, mas quando tento importar um objeto que já importei antes ele da a exception

view plaincopy to clipboardprint?
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '000005' for key 'objetoId_UNIQUE'  

Qual a melhor forma de tratar esse exception? para que possa serializar o erro de forma que possa ler no JavaScript.

Obrigado.

Não tem como o Validator saber se esse valor já foi utilizado. Sugiro você fazer um select count(1) from table where campo = ‘valor que você quer’.
Mas faça isso somente se for muito necessário. Acho melhor você aproveitar o erro do banco de dados (ele dá uma ConstraintException) e lançar o erro no validator.

Obrigado rafael… estava já colocando o try para tratar a exception… mas pensei melhor eu vou ter que mostrar informações do registro já cadastrado ai melhor fazer um select Obrigado.

um parêntesis: o VRaptor (na verdade o Hibernate Validator) só verifica as anotações de validação… o unique é uma restrição do banco (constraint), não entra na conta.

Obrigado

Acabei fazendo o select e if que o Rafael Guerreiro indicou.