/* Main operations */
@Override
public Object invoke(final MethodInvocation invocation) throws Throwable {
final Transactional transactional = AnnotationUtils.findAnnotation(invocation.getMethod(), Transactional.class);
return getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Object>() {
@Override
public Object execute() throws Throwable {
return invocation.proceed();
}
}, transactional.readOnly(), transactional.requiresNew());
}