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")
))