在案例查询中显式转换枚举

Explicitly casting enum in case query

我正在使用 jOOQ 构建一个 Postgres 查询(尽管查询没有使用 jOOQ 发送到数据库,它用于创建 vertx 使用的查询)。

该查询包含一个带有“案例”的片段:

...
set "state" = case
    when "theschema"."actions"."is_promoted" = true then 'OK'
    else "theschema"."actions"."state"
end

查询失败

ERROR: "CASE types actions_state_enum and text cannot be matched"

解决方案是将 'OK' 转换为 actions_state_enum,类似于 'OK'::"theschema"."actions_state_enum".

上面创建查询片段的代码如下所示:

DSL.iif(ACTIONS.IS_PROMOTED.isTrue(), ActionsStateEnum.OK, ACTIONS.STATE)

我找不到在代码中添加所需转换的方法。尝试 DSL.inline 添加自定义绑定但没有成功。

这看起来像 https://github.com/jOOQ/jOOQ/issues/5612。将尽快解决这个问题。解决方法是使用显式生成转换的自定义数据类型绑定