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>
标签:jooq,sql,java,mysql 来源: https://codeday.me/bug/20191201/2078977.html