假设:
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而不是生成的键。这是一个错误吗?
答案 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>