Héc*_*tor 5 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"))
.fetchOne();
return record.into(Integer.class);
}
Run Code Online (Sandbox Code Playgroud)
新行已插入,但record始终为null。我没有使用 JOOQ 代码生成。
这是 jOOQ 3.9 中的一个已知限制: https ://github.com/jOOQ/jOOQ/issues/2943
目前,RETURNING当使用普通 SQL 表和字段(与生成的表和字段相对)时,您无法在 jOOQ 中使用该子句,因为 jOOQ 需要知道要绑定到 JDBC 的标识列名称(在大多数数据库中),并且元数据无法从你的table("users")对象。
不幸的是,将列传递给ID子句RETURNING是不够的,因为不能保证这是标识列。您还可以将多个列传递给该RETURNING子句,以防 jOOQ 不知道哪一列是标识列。
| 归档时间: |
|
| 查看次数: |
1508 次 |
| 最近记录: |