小编典典

jOOQ-支持任意程度的UPDATE``SET''查询

sql

我有两个函数:一个返回字段列表,另一个返回选择查询(用于选择字段的对应值)。

private List<Field<?>> fields() {
    ....
}

private Select<?> select() {
    ...
}

请注意,度数是在运行时确定的,它取决于用户输入。因此List<Field<?>>Select<?>

可以插入表中:

context.insertInto(table, fields()).select(select()))

无法更新表:

context.update(table).set(DSL.row(fields()), select())

可以将此功能添加到jOOQ 3.7吗?

我们现在可以使用哪种解决方法?


阅读 312

收藏
2021-03-17

共1个答案

小编典典

不错,UpdateSetFirstStepDSL
API上缺少一种方法,该方法接受RowN从返回的类型作为第一个参数DSL.row(Collection)。对于jOOQ
3.7,应该对此进行修复:https :
//github.com/jOOQ/jOOQ/issues/4475

作为一种解决方法,如果您可以忍受黑客的罪恶感,则可以将其转换为原始类型:

context.update(table).set((Row1) DSL.row(fields()), (Select) select())

您可以强制转换DSL.row(fields())Row1,因为由返回的内部实现类型将DSL.row(fields())实现所有Row[N]类型。

2021-03-17