jOOQ - 支持 UPDATE ... SET ... 任意程度的查询
jOOQ - support for UPDATE ... SET ... query with arbitrary degree
我有两个功能:一个returns一个字段列表,另一个returns一个select查询(其中select是字段的对应值) .
private List<Field<?>> fields() {
....
}
private Select<?> select() {
...
}
请注意,度数是在运行时确定的,它取决于用户输入。因此 List<Field<?>>
和 Select<?>
.
可以插入 table:
context.insertInto(table, fields()).select(select()))
无法更新 table:
context.update(table).set(DSL.row(fields()), select())
可以将此功能添加到 jOOQ 3.7 中吗?
我们现在可以使用哪种解决方法?
不错,UpdateSetFirstStep
DSL API, which accepts RowN
as a first argument, the type returned from 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]
类型。
我有两个功能:一个returns一个字段列表,另一个returns一个select查询(其中select是字段的对应值) .
private List<Field<?>> fields() {
....
}
private Select<?> select() {
...
}
请注意,度数是在运行时确定的,它取决于用户输入。因此 List<Field<?>>
和 Select<?>
.
可以插入 table:
context.insertInto(table, fields()).select(select()))
无法更新 table:
context.update(table).set(DSL.row(fields()), select())
可以将此功能添加到 jOOQ 3.7 中吗?
我们现在可以使用哪种解决方法?
不错,UpdateSetFirstStep
DSL API, which accepts RowN
as a first argument, the type returned from 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]
类型。