Vous avez décidé d'utiliser JDBCTemplate très probablement pour simplifier le code par rapport à plain JDBC .
Ce problème particulier à mon humble avis rend le plain JDBC solution proposée dans autre réponse beaucoup plus simple, donc je recommanderais définitivement d'obtenir la connexion à la base de données à partir de JDBCTemplate et de faire l'insertion de manière JDBC.
La solution la plus simple utilisant JDBCTemplate qui me vient à l'esprit est d'envelopper l'insert dans une PROCEDURE
et renvoie l'horodatage sous la forme d'un OUT
paramètre.
Exemple simple (Ajustez la logique horaire selon vos besoins)
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;
/
L'appel se fait en utilisant 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
contient la valeur renvoyée, par ex. [P_TIME:2019-10-19 11:58:10.0]
Mais je ne peux que répéter, dans ce cas d'utilisation particulier, IMHO JDBC est un sauvetage de JDBCTemplate;)