Molto probabilmente hai deciso di utilizzare JDBCTemplate per semplificare il codice rispetto a JDBC semplice .
Questo particolare problema IMHO rende il JDBC semplice soluzione proposta in altra risposta molto più semplice, quindi consiglierei sicuramente di ottenere la connessione al database da JDBCTemplate e di fare l'inserimento in modo JDBC.
La soluzione più semplice che mi viene in mente utilizzando JDBCTemplate è avvolgere l'inserto in una PROCEDURE
e restituisci il timestamp come OUT
parametro.
Esempio semplice (Regola il log di tempo come richiesto)
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;
/
La chiamata viene eseguita utilizzando 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);
La Map
contiene il valore restituito ad es. [P_TIME:2019-10-19 11:58:10.0]
Ma posso solo ripetere, in questo caso d'uso particolare IMHO JDBC è un salvataggio da JDBCTemplate;)