在JOOQ中插入MySQL的返回查询

Abh*_*der 5 java mysql java-ee jooq

我正在尝试使用以下代码来获取自动生成的ID。我的后端是MySQL。代码看起来像这样

Record record = create.insertInto(CANDIDATE, CANDIDATE.FIRST_NAME,      
       CANDIDATE.LAST_NAME,CANDIDATE.EXTRACTED_NAME)
       .values("Charlotte", "Roche","Charlotte Roche")
       .returning(CANDIDATE.ID)
       .fetchOne();

System.out.println(record.getValue(CANDIDATE.ID));
Run Code Online (Sandbox Code Playgroud)

我收到NullPointerException。我看了http://www.jooq.org/javadoc/latest/org/jooq/InsertReturningStep.html。它说

Derby,H2,Ingres,MySQL, SQL Server仅允许将IDENTITY列值检索为“生成的键”。如果要求其他字段,则发出第二条语句。客户代码必须确保两个语句之间的事务完整性。

根据我在Mysql中的理解,auto_increment用作IDENTITY。任何人都可以请教一些如何实现MySQL的方法

我看了关于类似主题的这个SO问题,并尝试了以下

Result<?>  record =
            create.insertInto(CANDIDATE, CANDIDATE.FIRST_NAME, CANDIDATE.LAST_NAME,CANDIDATE.EXTRACTED_NAME)
                  .values("Charlotte", "Roche","Charlotte Roche")
                  .returning(CANDIDATE.ID)
                  .fetch();

            System.out.println(record.size());
Run Code Online (Sandbox Code Playgroud)

虽然它在后端插入记录,但是将record.size()打印为零

Krz*_*dan 0

可能是交易有问题。插入可能尚未将这些值保留在数据库中,因此不会获取任何内容。

另外我认为MySQL的IDENTITY不是由AUTO_INCRMENT而是由主键(...) https://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html