Olá,
estou tentando configurar no Spring um interceptador para alguns métodos do EntityManager (merge e persist), pois preciso fazer algumas
operações sobre as entidades no momento da gravação.
Fiz uma extensa pesquisa no google sobre algo do tipo, mas não consegui encontrar nada que me ajudasse.
Não está funcionando, não consigo que o método do interceptador seja chamado (inicialmente estou testando apenas o método merge)
Segue o código que estou usando:
<bean id="saveInterceptor" class="br.com.mvn.SaveInterceptor" />
<aop:config>
<aop:aspect id="saveAspect" ref="saveInterceptor">
<aop:pointcut expression="execution(* javax.persistence.EntityManager.merge(*))" id="mergePointCut"/>
<aop:around method="interceptSave" pointcut-ref="mergePointCut"/>
</aop:aspect>
</aop:config>
public Object interceptSave(ProceedingJoinPoint jp) throws Throwable {
System.out.println("Object about to be persisted: " + jp.getArgs()[0]);
return jp.proceed();
}
Já fiz testes tirando do pointcut a interface (javax.persistence.EntityManager) e deixando apenas o merge.
Consigo interceptar por exemplo uma classe minha que tenha um método merge, funciona perfeitamente.
Mas para o EntityManager, não vai…
Alguém já precisou fazer algo do tipo?
Valew,
MV.