INSERT..RETURNING 在 JOOQ 中不起作用
INSERT..RETURNING is not working in JOOQ
我有一个 MariaDB 数据库,我正试图在我的 table 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 代码生成。
这是 jOOQ 3.9 中的已知限制:https://github.com/jOOQ/jOOQ/issues/2943
当使用普通 SQL 时,您目前不能在 jOOQ 中使用 RETURNING
子句,因为 jOOQ 需要知道标识列名称才能绑定到 JDBC(在大多数数据库中)。不幸的是,将 ID
列传递给 RETURNING
子句是不够的,因为不能保证这是标识列。您还可以将几列传递给 RETURNING
子句,在这种情况下 jOOQ 不知道哪一列是标识列。
我有一个 MariaDB 数据库,我正试图在我的 table 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 代码生成。
这是 jOOQ 3.9 中的已知限制:https://github.com/jOOQ/jOOQ/issues/2943
当使用普通 SQL 时,您目前不能在 jOOQ 中使用 RETURNING
子句,因为 jOOQ 需要知道标识列名称才能绑定到 JDBC(在大多数数据库中)。不幸的是,将 ID
列传递给 RETURNING
子句是不够的,因为不能保证这是标识列。您还可以将几列传递给 RETURNING
子句,在这种情况下 jOOQ 不知道哪一列是标识列。