我有两个函数:一个返回字段列表,另一个返回选择查询(用于选择字段的对应值)。
private List<Field<?>> fields() { .... } private Select<?> select() { ... }
请注意,度数是在运行时确定的,它取决于用户输入。因此List<Field<?>>和Select<?>。
List<Field<?>>
Select<?>
可以插入表中:
context.insertInto(table, fields()).select(select()))
无法更新表:
context.update(table).set(DSL.row(fields()), select())
可以将此功能添加到jOOQ 3.7吗?
我们现在可以使用哪种解决方法?
不错,UpdateSetFirstStepDSL API上缺少一种方法,该方法接受RowN从返回的类型作为第一个参数DSL.row(Collection)。对于jOOQ 3.7,应该对此进行修复:https : //github.com/jOOQ/jOOQ/issues/4475
UpdateSetFirstStep
RowN
DSL.row(Collection)
作为一种解决方法,如果您可以忍受黑客的罪恶感,则可以将其转换为原始类型:
context.update(table).set((Row1) DSL.row(fields()), (Select) select())
您可以强制转换DSL.row(fields())为Row1,因为由返回的内部实现类型将DSL.row(fields())实现所有Row[N]类型。
DSL.row(fields())
Row1
Row[N]