Rozhodli jste se použít JDBCTemplate s největší pravděpodobností ke zjednodušení kódu ve srovnání s prostým JDBC .
Tento konkrétní problém IMHO dělá prostý JDBC řešení navržené v jiná odpověď mnohem jednodušší, takže bych rozhodně doporučil získat připojení k databázi z JDBCTemplate a provést vložení způsobem JDBC.
Nejjednodušší řešení pomocí JDBCTemplate, které mě napadá, je zabalit vložku do PROCEDURE
a vrátí časové razítko jako OUT
parametr.
Jednoduchý příklad (upravte logiku času podle potřeby)
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;
/
Volání se provádí pomocí 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
obsahuje vrácenou hodnotu např. [P_TIME:2019-10-19 11:58:10.0]
Ale mohu jen opakovat, v tomto konkrétním případě použití je IMHO JDBC záchrana z JDBCTemplate;)