JOOQ提供了执行以下操作的非常好的能力:
TableRecord tableRecord = dsl.newRecord(TABLE);
tableRecord.setSomeParam(...);
tableRecord.insert();
此时应将记录插入表格中。
我们可以做类似的事情:
tableRecord.getSomeParam(); // will return value above
但是,这个:
tableRecord.getId(); // NULL
始终返回null
。这是设计的吗?我们是否必须使用returning(TABLE.ID)
来获取自动生成的ID值而不是Record
?如果在事务上下文中执行查询,这种行为会不同吗?
编辑:
我正在使用PostgreSQL 9.4.10,我的表定义类似于以下内容:
CREATE TABLE item
(
id bigserial NOT NULL,
name character varying(245),
some_uuid uuid NOT NULL DEFAULT uuid_generate_v4(),
CONSTRAINT item_pkey PRIMARY KEY (id),
CONSTRAINT item_item_uuid_key UNIQUE (item_uuid)
)
其他信息:
3.8.6
答案 0 :(得分:2)
使用store()
方法(https://www.jooq.org/javadoc/3.2.0/org/jooq/UpdatableRecord.html#store())
存储记录后,将自动生成自动生成的ID。
您也可以在record.refresh()
之后致电insert
,然后您的记录将包含刷新的值。