【发布时间】:2017-07-01 04:19:31
【问题描述】:
我正在尝试通过以下方式创建一个 jooq 查询字符串
DSL.using(SQLDialect.MYSQL)
.select(
ImmutableList.of(DSL.field("Name"))
.from(DSL.table("Account"))
.where(DSL.field("Name").eq("Yaswanth's Company"))).toString()
生成的查询字符串将单引号用另一个单引号转义,这是 mySQL 转义单引号的默认方式。
"select Name from Account where Name = 'Yaswanth''s Company'"
但我需要用反斜杠转义单引号,因为我正在为 salesforce 形成查询字符串。 (称为 SOQL)。
我需要这样的查询字符串
"select Name from Account where Name = 'Yaswanth\\'s Company'"
我查看了 jooq 库代码,这是在 DefaultBinding 类中硬编码的
private final String escape(Object val, Context<?> context) {
String result = val.toString();
if (needsBackslashEscaping(context.configuration()))
result = result.replace("\\", "\\\\");
return result.replace("'", "''");
}
我有没有办法通过 DSL.using(*, *) 可以传递的配置或设置来覆盖此默认行为?
【问题讨论】: