我试图使用以下代码来获取自动生成的ID.我的后端是MySQL.代码看起来像这样Record record = create.insertInto(CANDIDATE, CANDIDATE.FIRST_NAME, CANDIDATE.LAST_NAME,CANDIDATE.EXTRACTED_NAME).values(Charl...

我试图使用以下代码来获取自动生成的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 only allow for retrieving IDENTITY column values as “generated key”. If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
根据我在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()打印为零
解决方法:
我知道我迟到了.
但我希望我能帮助有类似问题的人,
Derby, H2, Ingres, MySQL, SQL Server only allow for retrieving IDENTITY column values as “generated key“. If other fields are requested, a second statement is issued. Client code must assure transactional integrity between the two statements.
“生成密钥”这个词就是问题所在.
您可以使用SHOW CREATE TABLE $table_name检查您的表ID是否为AUTO_INCREMENT.我认为不是.
P / s:我正在使用MySQL
本文标题为:java – 在JOOQ中插入MySQL的返回查询


基础教程推荐
- 浅谈@FeignClient中name和value属性的区别 2023-02-10
- 解析HikariCP一百行代码轻松掌握多线程 2023-06-01
- 使用java.nio.file 库优雅的操作文件详解 2023-07-14
- springboot+vue实现登录功能的最新方法整理 2023-01-02
- java返回json请求中文变成问号的问题及解决 2023-02-10
- MyBatis-Plus实现公共字段自动填充功能详解 2023-03-21
- 在Java中轻松使用工厂设计模式介绍 2023-05-13
- Spring框架实现AOP的两种方式详解 2023-05-08
- 深入了解Java Object类的使用 2023-02-28
- JSP使用Common FileUpload组件实现文件上传及限制上传类型实例代码 2023-08-01