2017-02-21 43 views
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
+0

1)你使用的数据库是什么? 2)你的桌子的DDL是什么? –

+0

埃德尔先生您好:我刚刚更新了问题并回答了您的问题。谢谢你的时间! – user991710

+0

有趣。这应该是现成的,但我不能以这种方式重现它...你使用什么jOOQ版本?什么是JDBC驱动程序和版本?你有没有通过jOOQ进行调试,看看jOOQ是否在某个地方出了问题? –

回答