@Override public void entityForTranscationCallback(Operation op, Class<?>... entityClass) { if (TransactionSynchronizationManager.isActualTransactionActive()) { for (TransactionalSyncCallback cb : getTransactionSyncCallbacks()) { TransactionSynchronizationSyncImpl tsi = new TransactionSynchronizationSyncImpl(cb, op, entityClass); TransactionSynchronizationManager.registerSynchronization(tsi); } for (TransactionalCallback cb : getTransactionAsyncCallbacks()) { TransactionSynchronizationAsyncImpl tsi = new TransactionSynchronizationAsyncImpl(cb, op, entityClass); TransactionSynchronizationManager.registerSynchronization(tsi); } } else { StringBuilder sb = new StringBuilder(); for (Class<?> c : entityClass) { sb.append(c.getName()).append(","); } String err = String.format("entityForTranscationCallback is called but transcation is not active. Did you forget adding @Transactional to method??? [operation: %s, entity classes: %s]", op, sb.toString()); logger.warn(err); } }