Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 为什么keyHolder.getKey()返回null_Java - Fatal编程技术网

Java 为什么keyHolder.getKey()返回null

Java 为什么keyHolder.getKey()返回null,java,Java,我尝试用jdbc模板将person保存在db中person表有一个id、名称和情感状态,因此我们应该使用keyHolder对象为jdbc生成id支持当前代码将数据保存在表中,但id为null private final String insertSQL = """ insert into PEOPLE ( name , emotional_state ) VALUES ( ? , ? ) """ ;

我尝试用jdbc模板将person保存在db中person表有一个id、名称和情感状态,因此我们应该使用keyHolder对象为jdbc生成id支持当前代码将数据保存在表中,但id为null

private final String insertSQL =
    """
    insert into PEOPLE ( name , emotional_state ) 
    VALUES ( ? , ? )  
    """ ;

var declaredParameter = List.of(new SqlParameter( Types.VARCHAR , "name") ,
                                new SqlParameter(Types.INTEGER ,"emotional_state")) ;

var pscf = new PreparedStatementCreatorFactory( insertSQL ,declaredParameter);
pscf.setReturnGeneratedKeys(true);
pscf.setGeneratedKeysColumnNames("id");

var psc = pscf.newPreparedStatementCreator(List.of(name, index));
KeyHolder kh = new GeneratedKeyHolder();
this.jdbcTemplate.update(psc, kh);

很可能是因为您在更新之前调用了
kh.getKey()
,因此在实际生成密钥之前:

this.jdbcTemplate.update(psc, kh);

var newId = Objects.requireNonNull(kh.getKey()).longValue(); // here it should be non-null


你能解释一下吗?我试着用jdbc模板在db中保存person。person表有一个id、名称和情感状态,因此我们应该用keyHolder对象为jdbc生成id支持当前代码将数据保存在表中,但id为空