Java 为什么keyHolder.getKey()返回null
我尝试用jdbc模板将person保存在db中person表有一个id、名称和情感状态,因此我们应该使用keyHolder对象为jdbc生成id支持当前代码将数据保存在表中,但id为nullJava 为什么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 ( ? , ? ) """ ;
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为空