У меня есть столбец JSONB, содержащий массивы строк, например: ["foo", "bar"]
Я хочу написать эквивалент jOOQ:
SELECT * FROM sometable WHERE somecolumn ?| <mylist>
... где должен быть привязан к 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