java - 如何在 jooq 记录对象中设置当前数据库时间

标签 java jooq

我已经通过代码生成器生成了 jooq 记录。在我的记录中,我有一个时间戳字段,我想将其设置为数据库当前数据时间。

以下作品:

MyRecord myrecord = new MyRecord();
myrecord.setCreateTime(Timestamp.from(Instant.now())); 

但是我想使用数据库时间,所以像这样:(显然下面的语法有一个编译错误)

myrecord.set(MY_RECORD.CREATE_TIME, DSL.currentTimestamp());

实现此目标的最佳方法是什么?

最佳答案

使用 jOOQ 的 INSERT直接声明,而不是 UpdatableRecord

jOOQ 的 UpdatableRecord API 不允许使用 SQL 表达式作为值,只能将实际值传递给 Record.set(Field<T>, T) 方法,设计使然。如果你想引入 SQL 表达式,你应该恢复使用经典的 SQL,例如一个INSERT :

DSL.using(configuration)
   .insertInto(MY_TABLE)
   .set(...)
   .set(MY_TABLE.CREATE_TIME, DSL.currentTimestamp())
   .execute();

首选方法:使用 SQL

另一种选择是使用触发器或 SQL DEFAULT您可以直接放在表定义上的表达式。这样,无论您是通过 jOOQ 还是通过其他方式插入记录,都会生成当前时间戳。

关于java - 如何在 jooq 记录对象中设置当前数据库时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704389/

相关文章:

java - 使用按钮的 Action 监听器

jooq - 在 JOOQ 中,我们如何使用 Java Instant 映射到 Postgresql 时间戳类型?

java - 使用 jOOQ 以间隔实现 date_sub() 函数

尝试使用 POJO 记录更新表时出现 Java jOOQ 问题

java - 在 Spring MVC 中包含 View

java - 我可以在不同的 EditText 小部件上使用相同的 TextWatcher

java - Jersey(JAX-RS)如何使用多个可选参数映射路径

java - 如何进入 FutureTask 执行状态?

java - 在 Jooq 中创建 VIEW 语句

java - 将自定义 `DataType` 添加到 postgres-enum-typed `Binding` 时,Field 的 `TableField` 发生意外变化