@Override
            protected void doInTransactionWithoutResult(final TransactionStatus __) {
                val sql = String.format(DELETE_SQL_TEMPLATE, tableName, cleanupCriteria);
                val params = cleanupCriteria.getParameterValues();
                LOGGER.info("Cleaning audit records with query [{}]", sql);
                LOGGER.debug("Query parameters: [{}]", params);
                val count = jdbcTemplate.update(sql, params.toArray());
                LOGGER.info("[{}] records deleted.", count);
            }
Instance of TransactionTemplate to manually execute a transaction since
threads are not in the same transaction.
support/cas-server-support-audit-jdbc/src/main/java/org/apereo/inspektr/audit/support/JdbcAuditTrailManager.java