私は春のフレームワークを使用しており、さらに処理するために必要なIDを持つためにDBに行を挿入したいと考えています。 クエリーの挿入は以下の通りですが、パラメータなしの簡単なクエリーです。しかし、さらに悪いことに、executeAndReturnKey
をSimpleJdbcInsert
から使用して現用通話を構築する方法がありますか?これは挿入用のSQL照会です。しかし、私はそれがsimpleJdbcInsert
インスタンス内で使用できるかどうかわかりません。春にDBに行を挿入する方法、自動生成された値のみを使用してIDを返す方法はありますか?
insert into sdc_import_run(id_import_run, create_date)
values(nextval('seq_import_run'),now())
私はそれが動作しない
Number genId = simpleJdbcInsert.withTableName("sdc_import_run")
.usingGeneratedKeyColumns("id_import_run")
.executeAndReturnKey(new MapSqlParameterSource());
を試してみましたが、事は、彼らがテーブルのすべてのパラメータをしたいが、私はそれらのいずれかをたくない、私は唯一の自動生成を挿入したい、です:id_import_run
(主キー)とcreate_date
です。その結果、私は変数に挿入されたIDを持っています。あなたはどうしますか?
編集 このようなアプローチはうまくいきます。
public Integer persistInsertImportRunForId(){
String queryString = getSql("insertImportRunForId");
KeyHolder holder = new GeneratedKeyHolder();
jdbcTemplate.update(con -> {
return con.prepareStatement(queryString, Statement.RETURN_GENERATED_KEYS);
}, holder
);
return CommonUtils.tryOrGet(() -> holder.getKeys().get("id_import_run"), null);
}