JOOQ:返回自动递增的密钥?

时间:2012-06-15 18:26:59

标签: java mysql sql jooq

假设:

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

我想调用:INSERT INTO foo VALUES()并获取生成的密钥。我尝试按照jOOQ insert query with returning generated keys上的建议,但是当我调用时:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

<configuration>
  <generator>
    <generate>
      <relations>true</relations>
    </generate>
  </generator>
</configuration>