mariadb INSERT..RETURNING在JOOQ中不起作用

ddrv8njm  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(182)

我有一个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代码生成。

8nuwlpux

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不知道哪个是标识列。

相关问题