Você decidiu usar o JDBCTemplate provavelmente para simplificar o código em comparação com o JDBC simples .
Este problema específico IMHO torna o JDBC simples solução conforme proposta em outra resposta muito mais simples, então definitivamente recomendo obter a conexão com o banco de dados do JDBCTemplate e fazer a inserção de maneira JDBC.
A solução mais simples usando JDBCTemplate que me vem à mente é envolver a inserção em um
PROCEDURE
e retorne o timestamp como um OUT
parâmetro. Exemplo simples (Ajuste o logik de tempo conforme necessário)
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;
/
A chamada é feita usando
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);
O
Map
contém o valor retornado, por exemplo [P_TIME:2019-10-19 11:58:10.0]
Mas só posso repetir, neste caso de uso específico é IMHO JDBC um resgate de JDBCTemplate;)