如何使用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
相关产品推荐
相关产品推荐

