olá pessoal do portal java, já faz algum tempo que nao posto nada… mas hoje me deparei com um problema. sou um pouco leigo ainda com spring, e acredito que alguem ja deve ter passado por algo parecido.
com disse no titulo estou com um problema no controle de transações do spring, onde a minha dificuldade está no fato de que minha transação está lançando uma Exception; DataIntegrityViolationException até ai tudo dentro do esperado! mas o meu problema é que a causa do problema, é uma ConstraintViolationException e esta não sei porque, não possui a propriedade contrainName populada, sendo que esta informação é necessária pois no mapeamento das entidades só existe referência em uma das entidades! o que faz com que seja necessário faze uma consulta extra no banco para verificar a quebra da constraint, o que eu nao gostaria de fazer.
o código é mais ou menos este:
try{
this.transactionTemplate.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
try{
this.localidadeMercadoDAO.deletar(local);
}catch(Exception e){
throw new RuntimeException(e);
}
return validation;
}
});
}catch(DataIntegrityViolationException ex){
if(ex.getCause() instanceof ConstraintViolationException )
System.out.println("Violação de constraint:"+((ConstraintViolationException)ex.getCause()).getConstraintName())
}
gostaria de uma dica de como fazer isso:ou usando o hibernate validadation para verificar a quebra de contraint, ou de alguma forma conseguir recuperar no nome da contraint para mostrar uma mensagem personalizada para o usuário.
desede já muito grato!