Eclipselink LIKE查询中出现意外转义

时间:2017-08-29 11:11:11

标签: jpa escaping eclipselink oracle12c

我需要帮助解决一个奇怪的错误。在Oracle 12和Eclipselink 2.5.2上运行了一个应用程序,其中有一个简单的搜索屏幕,它使用LIKE子句和“%”作为通配符。

应用程序使用条件构建器创建查询。 QA测试人员仅在搜索屏幕中输入“_”下划线字符。应用程序代码使用'%'字符包装用户指定的文本。

new StringBuilder("%").append(param).append("%").toString()

在运行时,执行查询时,预准备的语句参数绑定如下:

bind => [%\_%, ACTIVE, IT, 20, 0]

意味着意外(至少对我而言)Eclipselink已经决定使用前导“\”来逃避“_”字符。数据库是Oracle 12.我希望生成的查询后缀为“ESCAPE'\'”,但这不会发生,并且查询不返回任何内容,因为在没有escape子句的情况下,“\ _”被处理,好像它是原始用户搜索字符串。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

Eclipselink不执行任何转义,这是远程客户端代码中的缺陷。对不起噪音。