2017-02-21 83 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是否在某個地方出了問題? –

回答