Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入..返回在JOOQ中不起作用_Java_Mysql_Mariadb_Jooq - Fatal编程技术网

Java 插入..返回在JOOQ中不起作用

Java 插入..返回在JOOQ中不起作用,java,mysql,mariadb,jooq,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")) .fetchOn

我有一个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);
}

插入新行,但
记录
始终为
。我没有使用JOOQ代码生成。

这是JOOQ 3.9中的一个已知限制:


在使用普通SQL时,当前无法在jOOQ中使用
RETURNING
子句,因为jOOQ需要知道要绑定到JDBC的标识列名(在大多数数据库中)。不幸的是,将
ID
列传递给
RETURNING
子句是不够的,因为不能保证这是标识列。您还可以将几个列传递给
RETURNING
子句,以防jOOQ不知道哪个列是标识列。

谢谢您的回答。所以,我需要查询最大值并加1,对吗?有没有其他方法可以利用自动增量?@bigdestroyer:我不会查询最大值,因为这可能会导致竞争条件。我会再次按名称搜索该用户,因为它可能是唯一的。或者,使用jOOQ代码生成器,在这种情况下,此查询将正确返回id。谢谢