Java 插入..返回在JOOQ中不起作用
我有一个MariaDB数据库,我正试图在我的表Java 插入..返回在JOOQ中不起作用,java,mysql,mariadb,jooq,Java,Mysql,Mariadb,Jooq,我有一个MariaDB数据库,我正试图在我的表users中插入一行。它有一个生成的id,我想在插入后获取它。我见过,但对我来说不起作用: public Integer addNewUser(String name) { Record record = context.insertInto(table("users"), field("name")) .values(name) .returning(field("id")) .fetchOn
users
中插入一行。它有一个生成的id
,我想在插入后获取它。我见过,但对我来说不起作用:
public Integer addNewUser(String name) {
Record record = context.insertInto(table("users"), field("name"))
.values(name)
.returning(field("id"))
.fetchOne();
return record.into(Integer.class);
}
插入新行,但
记录
始终为空
。我没有使用JOOQ代码生成。这是JOOQ 3.9中的一个已知限制:
在使用普通SQL时,当前无法在jOOQ中使用
RETURNING
子句,因为jOOQ需要知道要绑定到JDBC的标识列名(在大多数数据库中)。不幸的是,将ID
列传递给RETURNING
子句是不够的,因为不能保证这是标识列。您还可以将几个列传递给RETURNING
子句,以防jOOQ不知道哪个列是标识列。谢谢您的回答。所以,我需要查询最大值并加1,对吗?有没有其他方法可以利用自动增量?@bigdestroyer:我不会查询最大值,因为这可能会导致竞争条件。我会再次按名称搜索该用户,因为它可能是唯一的。或者,使用jOOQ代码生成器,在这种情况下,此查询将正确返回id。谢谢