java - JOOQ:返回自动递增的 key ?

标签 java mysql sql jooq

给定:

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

我想调用:INSERT INTO foo VALUES()并取回生成的 key 。我尝试按照 jOOQ insert query with returning generated keys 中的建议进行操作但是当我调用时:

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

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

最佳答案

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

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

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

关于java - JOOQ:返回自动递增的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056246/

相关文章:

php - 1044 - 用户 'homestead' @localhost 的访问被拒绝

mysql - 无法从 vibed 应用程序连接到 MySQL/MariaDB 数据库

SQL 查询连接多个记录中的值

mysql - INSERT INTO 语法错误 SQL

java - 如何检查 GPS 是否已禁用 Android

java - 当用户按下 JButton 时,如何将 JTable 中的特定行设为 "go to"?

java - Http 流(使用 CSV 模拟实时数据流)

c# - MySql 最后插入 ID,连接器 .net

php - MYSQL/SQL如何查询这个表结构中的订单结果?

java - 为什么 catch 参数隐式是最终的?