You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JOOQ原生SQL模板并移除WHERE子句的多余括号?

解决JOOQ WHERE子句自动添加括号的问题

你可以用DSL.sql()替代condition()方法来实现需求,sql()会直接注入原生SQL片段,不会额外添加包裹的括号。

修改后的JOOQ代码:

Field<String> address = val("0x159159159526212521");
Field<String> escape = val("escape");

rdbmsJooqContext.select(
            al.NAME.as("name"),
            al.ADDRESS.as("address")
    ).from(al)
            .where(
                    sql(" \"address\" = decode({0}, {1})", address, escape)
            ).fetchInto(AddressLabelResult.class);

修改后生成的SQL会符合你的期望:

where "address" = decode('0x159159159526212521', 'escape')

另外注意:你原来的代码里写的是'address'(单引号),这在PostgreSQL里是字符串字面量,不是列名,如果你要引用address列,应该用双引号包裹,就像上面代码里的\"address\",这样才和你最初的PostgreSQL查询语句对应。

内容的提问来源于stack exchange,提问作者JoneNa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:12:42