我正在try 使用块语句中的jOOQ更新一个列.我的Kotlin代码如下所示(newName
和id
是Kotlin变量):
dslContext.begin(
...,
dslContext.update(MYTABLE).set(MYTABLE.NAME, newName).where(MYTABLE.ID.eq(id))
...,
).execute()
JOOQ为PostgreSQL(使用jOOQ版本3.18.0)生成如下SQL:
do
$$
begin
...;
update "public"."mytable" set "public"."mytable"."name" = '...';
...;
end;
$$;
这完全没问题,除非新名称包含‘$$’.如果我try 将名称设置为类似于foo$$bar
的值,则会收到‘UnTerminated字符串文字’错误.
我能够解决这个问题,方法是将新名称除以$$
,然后使用DSL.concat(...)
重新创建原始字符串.如果jOOQ创建一个带有标记的美元引用的字符串,将会更容易,例如生成如下所示的内容
do
$FOO$
begin
...;
update "public"."mytable" set "public"."mytable"."name" = '...';
...;
end;
$FOO$;
这在某种程度上可能吗?