【问题标题】:Why does jOOQ map DSL.currentLocalDateTime() to current_timestamp instead of localtimestamp?为什么 jOOQ 将 DSL.currentLocalDateTime() 映射到 current_timestamp 而不是 localtimestamp?
【发布时间】:2017-10-08 01:10:06
【问题描述】:

org.jooq.impl.DSL.currentLocalDateTime() 在 SQL 方言 Oracle 中呈现为 current_timestamp(参见类 org.jooq.impl.CurrentTimestamp,相关代码未公开)。

在 Java 8 中,java.time.LocalDateTime 是日期时间没有时区。因此,我希望 jOOQ 呈现 LOCALTIMESTAMP 而不是 CURRENT_TIMESTAMP,因为 the difference between LOCALTIMESTAMP function and CURRENT_TIMESTAMP is that LOCALTIMESTAMP returns a TIMESTAMP value while CURRENT_TIMESTAMP returns a TIMESTAMP WITH TIME ZONE value

如何强制 jOOQ 呈现没有时区的时间戳?最好不定义CustomField?

【问题讨论】:

    标签: oracle jooq


    【解决方案1】:

    确实很有趣的观察。这是历史性的,因为DSL.currentTimestamp() 方法会生成一个CURRENT_TIMESTAMP 表达式,但会将其映射到java.sql.Timestamp(这是java.time.LocalDateTime 的等效类型。

    对您而言,最好的解决方法是使用plain SQL,在这些情况下一如既往:

    public static Field<LocalDateTime> localtimestamp() {
        return DSL.field("localtimestamp", LocalDateTime.class);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 2010-12-22
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多