Вы решили использовать JDBCTemplate, скорее всего, для упрощения кода по сравнению с plain JDBC .
Эта конкретная проблема IMHO делает решение plain JDBC , предложенное в другой ответ , намного проще, поэтому я бы настоятельно рекомендовал получить соединение с базой данных из JDBCTemplate и сделатьвставка способом JDBC.
Самое простое решение, использующее JDBCTemplate, которое мне приходит в голову, - это вставить вставку в PROCEDURE
и вернуть метку времени в качестве параметра OUT
.
Простой пример (отрегулируйте время логика как требуется)
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;
/
Вызов выполняется с использованием 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
содержит возвращаемое значение, например, [P_TIME:2019-10-19 11:58:10.0]
Но я могу только повторить, в данном конкретном случае использования IMHO JDBC спасение от JDBCTemplate ;)