Java 在updatewithjooq中使用原始值表达式

Java 在updatewithjooq中使用原始值表达式,java,sql,jooq,Java,Sql,Jooq,这是我正在尝试执行的查询: UPDATE TABLE users SET metadata = metadata - 'keyA' - 'keyB' WHERE <condition>; 我得到一个错误,说值是一个字符变化,而不是JSONB,我猜这是因为查询是用绑定值创建的,然后整个字符串试图插入,而不是作为表达式 如何在jooq中执行此值表达式?传递给set方法的内容: "metadata-'keyA'-'keyB'" 。。。不是直接注入结果SQL字符串的表达式。它是字

这是我正在尝试执行的查询:

UPDATE TABLE users SET metadata = metadata - 'keyA' - 'keyB'
    WHERE <condition>;
我得到一个错误,说
是一个
字符变化
,而不是
JSONB
,我猜这是因为查询是用绑定值创建的,然后整个字符串试图插入,而不是作为表达式


如何在jooq中执行此值表达式?

传递给set方法的内容:

"metadata-'keyA'-'keyB'"
。。。不是直接注入结果SQL字符串的表达式。它是字符串类型的绑定变量(即
VARCHAR
)。最简单的方法是使用“纯SQL”:

有关在jOOQ中使用“普通SQL”的更多信息,请参阅本手册的本节:

"metadata-'keyA'-'keyB'"
.set(USERS.METADATA, field(
     "{0} - {1} - {2}", 
     USERS.METADATA.getDataType(),
     USERS.METADATA, val("keyA"), val("keyB")
))