【问题标题】:Hibernate 4 escape colon character in createSQLQuerycreateSQLQuery中的Hibernate 4转义冒号字符
【发布时间】:2014-05-29 15:37:14
【问题描述】:

以下休眠查询失败:

select 1 as "{jsonprop:'string'}" from dual

以下例外:

org.hibernate.QueryException: Space is not allowed after parameter prefix ':' [ select 1 as "{json:'string'}" from dual]

在 Hibernate 4 中没有办法转义冒号字符吗?我试过 \: 和 :: 但都没有奏效。我已经看到提到这可能已在 v3 解析器中得到纠正,但它仍然失败 - 即使冒号 inside 是一个常量。

【问题讨论】:

    标签: java sql hibernate escaping


    【解决方案1】:

    我没有快速的测试方法,但我相信 '\:' 是您需要的。

    select 1 as "{jsonprop\\:'string'}" from dual
    

    https://stackoverflow.com/a/11971764/3684299

    如果这不起作用,您在哪里定义查询:在命名查询文件中还是在代码中的字符串中?

    【讨论】:

      【解决方案2】:

      如果您使用的是 hibernate 5+,我相信您可以使用 '::' 来转义 ':'。 see here

      如果您使用的是 4.x,我使用的解决方案是使用 like/ilike 和 '_' 字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-21
        • 1970-01-01
        • 2011-05-09
        • 2011-11-20
        • 1970-01-01
        • 2015-11-11
        相关资源
        最近更新 更多