繁体   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