【发布时间】:2015-07-07 04:01:17
【问题描述】:
我正在尝试使用以下代码来获取自动生成的 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));
我收到 NullPointerException。我看了一下http://www.jooq.org/javadoc/latest/org/jooq/InsertReturningStep.html。 它说
Derby、H2、Ingres、MySQL、 SQL Server 仅允许将 IDENTITY 列值检索为“生成的键”。如果请求其他字段,则发出第二条语句。客户端代码必须确保两个语句之间的事务完整性。
根据我对 Mysql auto_increment 的理解,它可以作为 IDENTITY。任何人都可以说明如何为 MySQL
实现这一目标我查看了这个SO Question on a similar topic 并尝试关注
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());
虽然它在后端插入记录,但将 record.size() 打印为零
【问题讨论】:
-
你能发布你得到的
NullPointerException吗?您能否也发布您的CANDIDATE表的 DDL? -
备案,这个问题也被举报为#4400
标签: java mysql jakarta-ee jooq