[英]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.