【发布时间】:2019-05-02 00:23:12
【问题描述】:
我有一个带有下表的 postgreSQL 数据库
CREATE TABLE IF NOT EXISTS user_acc
(
name TEXT NOT NULL,
updated TIMESTAMP DEFAULT now()
);
并且,在使用 JOOQ 时,数据插入如下(Kotlin 语言)
val record = create.newRecord(USER_ACC)
record.name = "username"
record.store()
并且记录被正确插入到数据库中,默认时间戳值从 now() 开始。
------------------------------------------
| user | updated |
------------------------------------------
|username |2018-11-29 14:14:52.635838 |
------------------------------------------
问题是,执行上述 JOOQ 语句的进程与数据库所在的服务器不同。两者都在不同的时区。
因此,如果我通过连接到数据库直接插入记录,则默认时间戳(从 now() 开始)与 JOOQ 插入的时间戳相差数小时。
我相信这是因为,在 JOOQ 的自动生成类中,updated 字段生成为
/**
* The column <code>user_acc.updated</code>.
*/
public final TableField<UserAccRecord, LocalDateTime> UPDATED = createField("updated", org.jooq.impl.SQLDataType.LOCALDATETIME.defaultValue(org.jooq.impl.DSL.field("now()", org.jooq.impl.SQLDataType.LOCALDATETIME)), this, "");
这是否会在服务端生成当前时间戳(for now()),而不是由数据库生成默认时间戳?如果是这样,我怎样才能让 JOOQ 跳过这个,并使用数据库的 now() 值?
感谢您的帮助!
【问题讨论】:
标签: postgresql jooq