Eclipselink LIKE 查询中的意外转义

Unexpected escaping in Eclipselink LIKE query

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

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

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

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

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

意思是 Eclipselink 出乎意料地(至少对我而言)决定用前导“\”转义“_”字符。数据库是 Oracle 12。然后我希望生成的查询以 "ESCAPE '\'" 为后缀,但这没有发生并且查询 returns 没有因为没有转义子句“\_”被处理为如果它是原始用户搜索字符串。

我错过了什么?

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