Я запутался в том, как создать оператор SQL, содержащий двоеточия. Я пытаюсь создать представление и использую (обратите внимание на двойные двоеточия):
create view MyView as (
SELECT
tableA.colA as colA,
tableB.colB as colB,
round(tableB.colD / 1024)::numeric, 2) as calcValue,
FROM
tableA, tableB
WHERE
tableA.colC = 'someValue'
);
Это запрос postgres, и я вынужден использовать двойные двоеточия (: :) для правильного выполнения оператора.
Затем я передаю вышеприведенное утверждение через:
s.createSQLQuery(myQuery).executeUpdate();
и я получаю:
Exception in thread "main" org.hibernate.exception.DataException: \
could not execute native bulk manipulation query
at org.hibernate.exception.SQLStateConverter.convert(\
SQLStateConverter.java:102)
... more stacktrace...
с выводом моего вышеупомянутого утверждения, измененного как (обратите внимание на знак вопроса):
create view MyView as (
SELECT
tableA.colA as colA,
tableB.colB as colB,
round(tableB.colD / 1024)?, 2) as calcValue,
FROM
tableA, tableB
WHERE
tableA.colC = 'someValue'
);
Очевидно, что hibernate путает мои двоеточия с именованными параметрами.
Есть ли способ избежать двоеточий (предложение Google, в котором упоминается, что одиночное двоеточие экранировано как двойное двоеточие, НЕ работает) или другой способ выполнить это утверждение?
Спасибо.