我有一个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代码生成。
答案 0 :(得分:4)
这是jOOQ 3.9中的已知限制:https://github.com/jOOQ/jOOQ/issues/2943
当使用纯SQL时,您当前无法在jOOQ中使用RETURNING
子句,因为jOOQ需要知道要绑定到JDBC的标识列名称(在大多数数据库中)。不幸的是,将ID
列传递给RETURNING
子句是不够的,因为不能保证这是标识列。您也可以将几列传递给RETURNING
子句,以防jOOQ知道哪一列是标识列。