【发布时间】:2021-10-29 16:28:30
【问题描述】:
我有一个在普通 postgres 中运行良好的大型查询,但是当我在 JPA 本机查询中运行时,我收到以下错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
查询包含以下行:
...
WHERE year = extract( year FROM CURRENT_DATE - '2 month'::interval)::int
and month = extract( month FROM CURRENT_DATE - '2 month'::interval)::int
...
我尝试通过在每个撇号前添加 \ 来进行转义,但代码无法编译:
error: illegal escape character
" WHERE year = extract( year FROM CURRENT_DATE - '2 month'\:\:interval)\:\:int and month = extract( month FROM CURRENT_DATE - '2 month'\:\:interval)\:\:int \n" +
在本机查询中不能使用 :: 吗?再次正常运行时,这工作得很好。
【问题讨论】:
-
JPA 无条件地采用
:作为参数名称指示符。每个冒号必须用 两个 反斜杠 (\\) 转义。你可以看看this SO 线程。
标签: spring postgresql jpa