[英]jooq- fetching a single value
我有一个问题..为什么我重复了我在fetch方法中选择的内容。
Date minDate = getDSLContext()
.select(CON_CAL_INSTANCE.DATE.min())
.from(CON_CAL_INSTANCE)
.join(CON_CAL_TEMPLATES)
.on(CON_CAL_INSTANCE.TEMPLATE_ID.eq(CON_CAL_TEMPLATES.ID))
.where(CON_CAL_TEMPLATES.ENTRY_TYPE.in("REPT", "HRPT"))
.fetchOne(CON_CAL_INSTANCE.DATE.min());
所以我在select子句中提供了CON_CAL_INSTANCE.DATE.min()
,为什么我必须在fetchOne(CON_CAL_INSTANCE.DATE.min())
重复它?
或者我不是这样做的吗?
你说得对。 使用Java泛型构建jOOQ DSL的方式,即使ResultQuery
使用Record1
作为行类型, ResultQuery<Record1<Date>>
也不会“知道”它只选择单个值。
除了重复列之外,您还有其他一些选择:
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 。
在旁注中,过去曾讨论过在jOOQ API中使用更多LINQ风格的语法:
from Table
where Predicates
select Projection
一开始看起来好主意的是提出新问题:
ORDER BY
, FOR UPDATE
子句怎么样,应该在SELECT
之后放置。 ( 有关详细信息,请参阅此帖子 )。 UNION
, INTERSECT
和EXCEPT
。 这些开放性问题使我们坚持使用标准的SQL语法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.