在createSQLQuery中Hibernate 4转义冒号字符

时间:2014-05-29 15:37:14

标签: java sql hibernate escaping

以下hibernate查询失败:

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解析器中得到纠正,但它仍然失败 - 即使冒号内是一个常量。

2 个答案:

答案 0 :(得分:0)

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

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

请参阅https://stackoverflow.com/a/11971764/3684299

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

答案 1 :(得分:0)

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

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