我已经通过代码生成器生成了 jooq 记录。在我的记录中,我有一个时间戳字段,我想将其设置为数据库当前数据时间。
下面的作品:
MyRecord myrecord = new MyRecord();
myrecord.setCreateTime(Timestamp.from(Instant.now()));
Run Code Online (Sandbox Code Playgroud)
但我想使用数据库时间,所以是这样的:(显然下面的语法中有一个编译错误)
myrecord.set(MY_RECORD.CREATE_TIME, DSL.currentTimestamp());
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?
INSERT直接使用jOOQ的语句,而不是UpdatableRecordjOOQ 的UpdatableRecordAPI 不允许使用 SQL 表达式作为值,按照设计只能将实际值传递给Record.set(Field<T>, T)方法。如果您想引入 SQL 表达式,您应该恢复使用经典 SQL,例如INSERT:
DSL.using(configuration)
.insertInto(MY_TABLE)
.set(...)
.set(MY_TABLE.CREATE_TIME, DSL.currentTimestamp())
.execute();
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用DEFAULT可以直接放在表定义上的触发器或 SQL表达式。这样,无论您是通过 jOOQ 还是通过其他方式插入记录,都会生成当前时间戳。
| 归档时间: |
|
| 查看次数: |
1978 次 |
| 最近记录: |