Zdecydowałeś się użyć JDBCTemplate najprawdopodobniej w celu uproszczenia kodu w porównaniu do zwykłego JDBC .
Ten konkretny problem IMHO sprawia, że zwykły JDBC rozwiązanie proponowane w inna odpowiedź znacznie prostsze, więc zdecydowanie polecam uzyskać połączenie z bazą danych z JDBCTemplate i zrobić wstawkę w sposób JDBC.
Najprostszym rozwiązaniem przy użyciu JDBCTemplate, które przychodzi mi do głowy, jest zawinięcie wstawki w PROCEDURE
i zwróć znacznik czasu jako OUT
parametr.
Prosty przykład (dostosuj logikę czasu zgodnie z wymaganiami)
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;
/
Połączenie odbywa się za pomocą 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
zawiera zwróconą wartość np. [P_TIME:2019-10-19 11:58:10.0]
Ale mogę tylko powtórzyć, w tym konkretnym przypadku użycia jest IMHO JDBC ratunkiem od JDBCTemplate;)