【问题标题】:JOOQ: Returning auto-incremented key?JOOQ:返回自动递增的键?
【发布时间】:2012-06-18 20:27:42
【问题描述】:

给定:

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 而不是生成的密钥。这是一个错误吗?

【问题讨论】:

    标签: java mysql sql jooq


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-28
      • 2016-09-06
      • 2019-09-26
      • 2017-02-10
      • 1970-01-01
      • 2015-05-11
      • 2018-11-23
      • 2019-08-07
      相关资源
      最近更新 更多