在案例查询中显式转换枚举
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。将尽快解决这个问题。解决方法是使用显式生成转换的自定义数据类型绑定
我正在使用 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。将尽快解决这个问题。解决方法是使用显式生成转换的自定义数据类型绑定