2012-06-15 82 views
3

考慮: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而不是生成的密鑰。這是一個錯誤?

回答

3

這似乎是FieldMapsForInsert.isExecutable()中的一個錯誤。它將上述查詢標記爲不可執行,但在MySQL下是合法的。我提交了https://github.com/jOOQ/jOOQ/issues/20

您可以將NULL作爲workaround插入。此外,您必須配置JOOQ以生成表「關係」,否則returning()將不會看到主鍵的存在並返回空值。

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