Estou tentando capturar a Exception ConstraintViolationException
no meu DAO assim:
try {
em.persist(categoria);
} catch(ConstraintViolationException ex){
System.out.println(ex.getMessage());
} catch(Exception ex){
System.out.println(ex.getMessage());
}
Mas não estou tendo sucesso, só cai no bloco catch que captura Exception.
Andei pesquisando e tentei criar um interceptor para fazer essa captura, desta forma:
@Intercepts(after = JPATransactionInterceptor.class)
public class UniqueExceptionInterceptor {
private final ControllerMethod controllerMethod;
@Inject
public UniqueExceptionInterceptor(ControllerMethod controllerMethod) {
this.controllerMethod = controllerMethod;
}
public UniqueExceptionInterceptor() {
this(null);
}
@Accepts
public boolean accepts(){
return "adiciona".equals(controllerMethod.getMethod().getName());
}
@AroundCall
public void intercepta(SimpleInterceptorStack stack){
try {
stack.next();
} catch (ConstraintViolationException ex){
System.out.println("1");
} catch (org.hibernate.exception.ConstraintViolationException ex){
System.out.println("2");
System.out.println(ex.getConstraintName());
}
}
}
Mas também não tive sucesso, alguém pode me ajudar ? OBS: Estou utilizando o plugin Vraptor-jpa