簡體   English   中英

jooq-獲取單個值

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

使用更多LINQ風格的語法

在旁注中,過去曾討論過在jOOQ API中使用更多LINQ風格的語法:

from Table
where Predicates
select Projection

一開始看起來好主意的是提出新問題:

  1. ORDER BYFOR UPDATE子句怎么樣,應該在SELECT之后放置。 有關詳細信息,請參閱此帖子 )。
  2. 如何設置操作,如UNIONINTERSECTEXCEPT

我還在這里寫了關於SQL中詞法和邏輯運算順序之間的區別

這些開放性問題使我們堅持使用標准的SQL語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM