> There is written in javadoc, that fetchOne() "Returns: The resulting > values.".
Thanks for pointing that out. That's a copy-paste error: https://sourceforge.net/apps/trac/jooq/ticket/419 > I have the following query: > > int JobID = > sqlFactory.select(Job.ID).from(Job.JOB).where(Job.POSITION.notEqual(0), > Job.STATUS.equal(JobStatus.QUEUED)).orderBy(Job.POSITION).limit(1).fetchOne(Job.ID); > > And I think this line can throw NullReferenceException in case SELECT > finds no rows matching conditions (underlying call to fetchOne(), > returning Record will return null in this case). And implicit cast to > int will get us NullReferenceException. jOOQ does not support primitive types (yet). Hence you must always take care when using auto-unboxing of Integer to int. This is not a jOOQ issue, though. jOOQ uses the generic type <T> for field types, which can never be a primitive type. Hence it is always nullable (even if the underlying field is a not null field) > I think this should be explicitly documented, that generic method > fetchOne() can return null also (not only "the resulting values") and > null means - no rows were found by SELECT query. It's especially > important when working with generic fetchOne() methods, returning > simple types like Integer since they are implicitly cast into their > non-object counterparts like int. Assign the value to "Integer jobID" and add an additional null check. I will correct the Javadoc as of #419 to clarify this behaviour.
