Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOOQ在使用记录插入时获取自动生成的列值,而不是返回_Java_Sql_Jooq - Fatal编程技术网

Java JOOQ在使用记录插入时获取自动生成的列值,而不是返回

Java JOOQ在使用记录插入时获取自动生成的列值,而不是返回,java,sql,jooq,Java,Sql,Jooq,JOOQ提供了非常好的功能,可以执行以下操作: TableRecord tableRecord = dsl.newRecord(TABLE); tableRecord.setSomeParam(...); tableRecord.insert(); CREATE TABLE item ( id bigserial NOT NULL, name character varying(245), some_uuid uuid NOT NULL DEFAULT u

JOOQ提供了非常好的功能,可以执行以下操作:

TableRecord tableRecord = dsl.newRecord(TABLE);
tableRecord.setSomeParam(...);
tableRecord.insert();
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)
)
此时,应将记录插入表中

我们可以这样做:

tableRecord.getSomeParam(); // will return value above
然而,这:

tableRecord.getId(); // NULL
始终返回
null
。这是故意的吗?我们是否必须使用
返回(TABLE.ID)
来获取自动生成的ID值,而不是
记录
?如果在事务上下文中执行查询,这种行为是否不同


编辑:

我使用的是PostgreSQL 9.4.10,我的表定义类似于以下内容:

TableRecord tableRecord = dsl.newRecord(TABLE);
tableRecord.setSomeParam(...);
tableRecord.insert();
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版本:
    3.8.6
使用
store()
方法()

存储记录后,将刷新自动生成的ID

您也可以在插入后调用
record.refresh()
,那么您的记录将包含刷新的值。

使用
store()
方法()

存储记录后,将刷新自动生成的ID


您也可以在插入后调用
record.refresh()
,那么您的记录将包含刷新的值。

1)您使用的是什么数据库?2) 你们桌子的DDL是多少?你好,埃德尔先生:我刚刚用你们问题的答案更新了这个问题。谢谢你的时间!有趣。这应该是开箱即用的,但我不能用这种方式复制它。。。您使用的是什么jOOQ版本?什么JDBC驱动程序和版本?您是否通过jOOQ进行调试以查看jOOQ是否在某个地方出现了错误的转向?澄清一下,您的意思是您不能在问题描述中重现错误的行为?我已经用版本号更新了票据说明。我还没有尝试过通过库进行调试-我会尽快尝试这样做。感谢您到目前为止的回复!事实上,我无法重现问题描述中的错误行为。我得到了我这边的ID值。不管怎样,您是否考虑过升级您6年的PostgreSQL驱动程序?1)您使用的是什么数据库?2) 你们桌子的DDL是多少?你好,埃德尔先生:我刚刚用你们问题的答案更新了这个问题。谢谢你的时间!有趣。这应该是开箱即用的,但我不能用这种方式复制它。。。您使用的是什么jOOQ版本?什么JDBC驱动程序和版本?您是否通过jOOQ进行调试以查看jOOQ是否在某个地方出现了错误的转向?澄清一下,您的意思是您不能在问题描述中重现错误的行为?我已经用版本号更新了票据说明。我还没有尝试过通过库进行调试-我会尽快尝试这样做。感谢您到目前为止的回复!事实上,我无法重现问题描述中的错误行为。我得到了我这边的ID值。不管怎样,您是否考虑过升级您6年的PostgreSQL驱动程序?