おそらく、プレーンJDBC と比較してコードを単純化するために、JDBCTemplateを使用することにしました。 。
この特定の問題は、IMHOがプレーンJDBCを作成します。 その他の回答 で提案されているソリューション はるかに単純なので、JDBCTemplateからデータベース接続を取得し、JDBCの方法で挿入することを強くお勧めします。
私の頭に浮かぶJDBCTemplateを使用した最も簡単な解決策は、挿入をPROCEDURE
でラップすることです。 タイムスタンプをOUT
として返します パラメータ。
簡単な例(必要に応じて時間ログを調整します)
create procedure insert_with_return_time (p_str VARCHAR2, p_time OUT DATE) as
BEGIN
insert into identity_pk(pad) values(p_str);
p_time := sysdate;
END;
/
呼び出しはSimpleJdbcCall
を使用して行われます
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_with_return_time");
SqlParameterSource params = new MapSqlParameterSource().addValue("p_str", str);
Map<String, Object> out = jdbcCall.execute(params);
Map
戻り値が含まれます。例: [P_TIME:2019-10-19 11:58:10.0]
しかし、繰り返すことしかできません。この特定のユースケースでは、IMHOJDBCがJDBCTemplateからの救済です。;)