Decidiste usar JDBCTemplate muy probablemente para simplificar el código en comparación con simple JDBC .
Este problema particular en mi humilde opinión hace que el simple JDBC solución propuesta en otra respuesta mucho más simple, por lo que definitivamente recomendaría obtener la conexión de la base de datos de JDBCTemplate y hacer la inserción de forma JDBC.
La solución más simple usando JDBCTemplate que me viene a la mente es envolver el inserto en un PROCEDURE
y devolver la marca de tiempo como OUT
parámetro.
Ejemplo simple (Ajuste la lógica de tiempo según sea necesario)
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 llamada se realiza 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);
El Map
contiene el valor devuelto, p. [P_TIME:2019-10-19 11:58:10.0]
Pero solo puedo repetir, en este caso de uso particular, en mi humilde opinión JDBC es un rescate de JDBCTemplate;)