3

鉴于:

CREATE TABLE foo (id BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));

我想调用:INSERT INTO foo VALUES()并取回生成的密钥。我尝试遵循在jOOQ 插入查询中找到的建议并返回生成的密钥,但是当我调用时:

RoomsRecord record = db.insertInto(foo, Collections<Field<?>>emptyList()).returning(foo.ID).fetchOne();

JOOQ 返回 null 而不是生成的密钥。这是一个错误吗?

4

1 回答 1

3

这似乎是 FieldMapsForInsert.isExecutable() 中的错误。它将上述查询标记为不可执行,但在 MySQL 下是合法的。我提交了https://github.com/jOOQ/jOOQ/issues/20

您可以插入NULL作为解决方法。此外,您必须配置 JOOQ 以生成表“关系”,否则returning()将看不到主键的存在并返回 null。

<configuration>
  <generator>
    <generate>
      <relations>true</relations>
    </generate>
  </generator>
</configuration>
于 2012-06-15T18:34:35.800 回答