public static void transaction(final DataSource dataSource, final Consumer<DSLContext> consumer) {
        context(dataSource, context -> context.transaction(nested -> consumer.accept(DSL.using(nested))));
    }
@param dataSource
@param function
@param <R>
@return
@throws stroom.util.exception.DataChangedException If another thread/node has already changed the data
stroom-db-util/src/main/java/stroom/db/util/JooqUtil.java