В моем Java-приложении раньше у меня был SQL-запрос, такой как ниже:
INSERT INTO "KPI_MEASURE" (
id,
created_at,
kpi_project_id,
kpi_frequency_id,
kpi_metric_id,
branch,
value
)
SELECT
nextval('"KPI_MEASURE_ID_seq"'::regclass),
now(),
kpi_measure.kpi_project_id,
kpi_measure.kpi_frequency_id,
kpi_measure.kpi_metric_id ,
kpi_measure.branch ,
sum(kpi_measure.value)
FROM "KPI_MEASURE" kpi_measure
INNER JOIN "KPI_METRIC" kpi_metric ON kpi_measure.kpi_metric_id = kpi_metric.id
INNER JOIN "KPI_PROJECT" kpi_project ON kpi_measure.kpi_project_id = kpi_project.id
INNER JOIN "KPI_AGGREGATION_PROJECT" kpi_agg_project ON kpi_project.name = kpi_agg_project.child_project_name
WHERE kpi_metric.aggregated = false
GROUP BY kpi_measure.branch, kpi_measure.kpi_metric_id, kpi_measure.kpi_project_id, kpi_project.name, kpi_measure.kpi_frequency_id;
Я выполнил этот sql с jdbcTemplate.update
, и он работал.
Но недавно я изменилзначение now()
по аргументу: :today_date
, я даю этот аргумент с моим кодом:
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(TODAY_DATE, today); // TODAY_DATE = today_date
jdbcTemplate.update(sql, parameters);
Но теперь, это создает ошибку:
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;Неверная грамматика SQL
...
Вложенное исключение - org.postgresql.util.PSQLException: расширение hstore не установлено.
Я не понимаю, почему это ошибка, посколькуМне сказали сделать, когда мы хотим добавить аргумент с запросом jdbc.
Редактировать:
Тип данных столбца - timestamp without time zone
, а переменная today
-типа String
.
Полагаю, я должен был использовать Timestamp
, поэтому я изменил свой код:
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(TODAY_DATE, new Timestamp(System.currentTimeMillis())); // TODAY_DATE = today_date
jdbcTemplate.update(sql, parameters);
Теперь у меня только ошибка
"PSQLException: расширение hstore не установлено."
Возможно, мне нужно добавить hstore, но я не могу понять, почему.