Olá pessoal!
De antemão, obrigado pela ajuda.
Fiz a busca dessa solução de várias formas. Encontrei diversas implementações, porém, nenhuma delas eu obtive sucesso. Por isso venho aqui buscar ajuda.
Estou utilizando Spring 3.0.3, Hibernate 3.3.2, JPA 2.0 e JSF 2.0. Tentarei sintetizar a forma como está a implementação, mas, para ficar mais claro, estou usando EntityManager para a parte da persistência.
Repositório:
public T add(T bean) {
// Método que irá gerar a exceção
getEntityManager().persist( bean );
return bean;
}
Serviço:
@Transactional( propagation = Propagation.REQUIRED, noRollbackFor = Throwable.class )
// Tentei apenas como @Transactional também e não funcionou
public D save( D dto ) {
D dtoSaved = null;
E entity = getAssembler().toEntity( dto );
E entitySaved = repository.add( entity );
if ( entitySaved != null && entitySaved.getPk() != null ) {
dtoSaved = getAssembler().toDTO( entitySaved );
}
return dtoSaved;
}
Aspecto:
@Aspect
public class PersistenciaExceptionAspecto {
@Pointcut( "execution(@org.springframework.transaction.annotation.Transactional * *(..) )" )
public void transactionalMethod() {}
@AfterThrowing( pointcut = "transactionalMethod()", throwing = "e" )
public void afterThrowingFromTransactionalMethod( JoinPoint joinPoint, RuntimeException e ) {
System.out.println( "Aspecto: PersistenciaExceptionAspecto - Lançada exception" );
}
}
Tentei, também, fazendo configurações no application-context.xml, mas, como dito anteriormente, não consegui resolver o meu problema. Vamos ao problema para que fique ainda mais entendido.
Como pode ser visto acima, a implementação está realmente muito simples. Então eu tento fazer a persistência de uma entitade que tenha a unicidade em um determinado campo, forçando o lançamento de uma exceção (seja ela uma exceção checada ou não checada), mas mensagem “[color=red]Aspecto: PersistenciaExceptionAspecto - Lançada exception[/color]”, como consta no método afterThrowingFromTransactionalMethod do aspecto, não está sendo exibida no console da aplicação.
Eu não consigo mais enxergar onde posso estar errando, portanto, gostaria que vocês pudessem me ajudar a tentar sanar esse problema.
Um grande abraço a todos e obrigado.