我有一个MariaDB数据库,我试图在表users
中插入一行。它有一个生成的id
,我想在插入后得到它。我看到了this,但它对我不起作用:
public Integer addNewUser(String name) {
Record record = context.insertInto(table("users"), field("name"))
.values(name)
.returning(field("id"))
.fetchOne();
return record.into(Integer.class);
}
插入新行,但record
始终为null
。我没有使用JOOQ代码生成。
1条答案
按热度按时间8nuwlpux1#
这是jOOQ3.9中的一个已知限制:https://github.com/jOOQ/jOOQ/issues/2943
在使用plain SQL tables and fields(与生成的plain SQL tables and fields相反)时,当前不能在jOOQ中使用
RETURNING
子句,因为jOOQ需要知道标识列名才能绑定到JDBC(在大多数数据库中),并且table("users")
对象中没有元数据。不幸的是,将
ID
列传递给RETURNING
子句是不够的,因为不能保证这是标识列。您还可以将几个列传递给RETURNING
子句,以防jOOQ不知道哪个是标识列。