Jooq ARRAY_AGG where 子句
Posted
技术标签:
【中文标题】Jooq ARRAY_AGG where 子句【英文标题】:Jooq ARRAY_AGG where clause 【发布时间】:2022-01-07 10:49:12 【问题描述】:我有想要使用 scala Jooq 参数执行的查询。
select * from
table
where ("value1") in unnest(array) and ("value2") in unnest(array);
我可以将此部分转换为以下 jooq 参数,但我无法获得我需要为 where 子句做的事情。
dslContext.select(asterisk()).from(table).where(*)
【问题讨论】:
【参考方案1】:目前 jOOQ 似乎不支持该特定语法,另请参阅此功能请求: https://github.com/jOOQ/jOOQ/issues/12330
如果您在 jOOQ 中缺少某个功能,您可以随时通过 plain SQL templating 扩展 jOOQ。在这种情况下:
def inUnnest[T](value: T, array: Field[Array[T]]): Condition =
inUnnest(DSL.value(value), array)
def inUnnest[T](value: Field[T], array: Field[Array[T]]): Condition =
DSL.condition("0 in unnest (1)", value, array)
【讨论】:
以上是关于Jooq ARRAY_AGG where 子句的主要内容,如果未能解决你的问题,请参考以下文章
Knex:如何在 knex 中的有子句中编写 ARRAY_AGG?
在 JOOQ 中使用 NOWAIT 和 SKIP LOCKED 子句的解决方法