Du bestämde dig för att använda JDBCTemplate för att förenkla koden i jämförelse med vanlig JDBC .
Detta speciella problem IMHO gör den vanliga JDBC lösning som föreslagits i annat svar mycket enklare, så jag rekommenderar definitivt att du hämtar databasanslutningen från JDBCTemplate och gör insättningen på ett JDBC-sätt.
Den enklaste lösningen med JDBCTemplate som jag tänker på är att linda in bilagan i en PROCEDURE
och returnera tidsstämpeln som en OUT
parameter.
Enkelt exempel (Justera tidslogiken efter behov)
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;
/
Samtalet görs med 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
innehåller det returnerade värdet t.ex. [P_TIME:2019-10-19 11:58:10.0]
Men jag kan bara upprepa, i detta specifika användningsfall är IMHO JDBC en räddning från JDBCTemplate;)