0
JOOQ提供做以下的非常好的能力的自动生成的列值: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)
)
其他信息:
- PostgreSQL驱动: “postgresql:postgresql> 9.1-901.jdbc4”
- JOOQ versi于:
3.8.6
1)你使用的数据库是什么? 2)你的桌子的DDL是什么? –
埃德尔先生您好:我刚刚更新了问题并回答了您的问题。谢谢你的时间! – user991710
有趣。这应该是现成的,但我不能以这种方式重现它...你使用什么jOOQ版本?什么是JDBC驱动程序和版本?你有没有通过jOOQ进行调试,看看jOOQ是否在某个地方出了问题? –