Du besluttede at bruge JDBCTemplate højst sandsynligt for at forenkle koden i forhold til almindelig JDBC .
Dette særlige problem IMHO gør den almindelige JDBC løsning som foreslået i andet svar meget enklere, så jeg vil klart anbefale at få databaseforbindelsen fra JDBCTemplate og lave indsættelsen på en JDBC-måde.
Den enkleste løsning, der bruger JDBCTemplate, jeg tænker på, er at pakke indsatsen ind i en PROCEDURE
og returner tidsstemplet som en OUT
parameter.
Simpelt eksempel (Juster tidslogikken 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;
/
Opkaldet udføres ved hjælp af 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
indeholder den returnerede værdi f.eks. [P_TIME:2019-10-19 11:58:10.0]
Men jeg kan kun gentage, i dette særlige tilfælde er IMHO JDBC en redning fra JDBCTemplate;)