I have the following query: Field<Integer> jobTaskCount = sqlFactory.select(Task.ID.count()) .where(Task.JOB_ID.equal(Job.ID), Task.STATUS.in(TaskStatus.EXECUTING, TaskStatus.QUEUED).not()) .asField();
result = sqlFactory.select(Job.ID, Job.JOBTYPE_ID).from(Job.JOB) .where(Job.STATUS.equal(JobStatus.EXECUTING), jobTaskCount.equal(0)).limit(1).forUpdate() .fetchOne(); In which .from(Task.TASK) part is missing in the subquery. But instead of complaining about incorrect query syntax, jooq constructed the following: select distribucalc.job.id, distribucalc.job.jobtype_id from distribucalc.job where (distribucalc.job.status = 'EXECUTING' and (select count(distribucalc.task.id) from dual where (distribucalc.task.job_id = distribucalc.job.id and not(distribucalc.task.status in ('EXECUTING', 'QUEUED')))) = 0) limit 0, 1 for update As you can see missing FROM clause was replaced by unknown "from dual". Jooq version 1.5.8