@Override
    public int deleteOrphans() {
        return JooqUtil.contextResult(jobDbConnProvider, context -> context
                .deleteFrom(JOB)
                .where(JOB.ID.notIn(
                        context.select(JOB_NODE.JOB_ID)
                                .from(JOB_NODE)))
                .execute());
    }
This class is very slim because it uses the GenericDao.
Why event use this class? Why not use the GenericDao directly in the service class?
Some reasons:
1. Hides knowledge of Jooq classes from the service
2. Hides connection provider and GenericDao instantiation -- the service class just gets a working thing injected.
3. It allows the DAO to be easily extended.
<p>
//TODO gh-1072 Maybe the interface could implement the standard methods below? Then this would be even slimmer.
stroom-job/stroom-job-impl-db/src/main/java/stroom/job/impl/db/JobDaoImpl.java