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

解决方法:

这似乎是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-如何以编程方式获取Hibernate模型的jOOQ表?


下一篇:为什么项目中用了JOOQ后大家都不愿再用Mybatis?