【发布时间】:2016-11-15 08:34:06
【问题描述】:
我有一个 JSONB 列,其中包含字符串数组,例如:["foo", "bar"]
我想写 jOOQ 等价物:
SELECT * FROM sometable WHERE somecolumn ?| <mylist>
...where 应该绑定到一个 java 字符串标签名称列表。
似乎没有对 ?| 的任何直接支持。在 jOOQ 3.8 中。我已经查看了在某种条件下绑定到原始 sql,但我不太确定语法;如果尝试使用与绑定表达式冲突的 ? postgres 运算符,情况会变得更糟。
更新:3.8.3 的堆栈跟踪
我将其简化为最低限度的测试。使用 jOOQ 3.8.3 添加这样的条件时:
query.addConditions(DSL.condition("sometable.tags ?| array['sometag']"));
产生这样的堆栈跟踪:
Caused by: org.postgresql.util.PSQLException: No value specified for parameter 1.
at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:228)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:163)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:622)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:472)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:465)
at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:194)
at org.jooq.impl.AbstractResultQuery.execute(AbstractResultQuery.java:269)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:348)
... 36 more
【问题讨论】:
标签: json postgresql jooq