您做对了。用Java泛型构造jOOQ
DSL的方式,您
ResultQuery<Record1<Date>>并不
“知道”
它只是选择一个值,即使
ResultQuery将其
Record1用作行类型也是如此。
除了重复该列外,您还有其他选择:
ResultQuery<Record1<Date>> query = // ...// Use two method calls (this may result in a NullPointerException!// as fetchOne() may return null):Date date1 = query.fetchOne().value1();// Use fetchValue():Date date2 = getDSLContext().fetchValue(query);
另请参阅
DSLContext.fetchValue()Javadoc。
使用更多的LINQ风格的语法
附带说明一下,过去曾经讨论过在jOOQ API中使用更多LINQ风格的语法:
from Tablewhere Predicatesselect Projection
最初看起来不错的主意是提出新的问题:
- 那么
ORDER BY
,FOR UPDATE
子句呢,仍然应该放在SELECT
。子句之后。(有关详细信息,请参阅此帖子)。 - 怎么样设置操作,如
UNIOn
,INTERSECT
和EXCEPT
。
这些未解决的问题使我们坚持使用标准SQL语法。



