Я использую simpleJDBCTemplate для вставки значения в базу данных postgre.
String sql "insert into testTable values(:bla, :blah, functionThatTakesAText(':blu'))"
BeanPropertySqlParameterSource namedParameters = new BeanPropertySqlParameterSource(lighting);
simpleJdbcTemplate.update(sql, namedParameters);
Теперь параметр blu на самом деле представляет собой число (фактическое значение sql принимает 2 вещественных числа), которое читается из файла, предоставленного клиентом.
В результате база данных получает что-то вроде следующего:
insert into testTable values(?, ?, functionThatTakesAText(':blu'))
и не может заменить параметр: blu, как ожидалось.
Текущий обходной путь, который я использую, - это замена параметра blu его значением с помощью регулярного выражения, но я не уверен, насколько это безопасно.
Как бы вы решили это?