Sql jOOQ-支持更新。。。设置任意度查询

Sql jOOQ-支持更新。。。设置任意度查询,sql,sql-update,jooq,Sql,Sql Update,Jooq,我有两个函数:一个返回字段列表,另一个返回选择查询,该查询选择字段的相应值 private List<Field<?>> fields() { .... } private Select<?> select() { ... } 无法更新表: context.update(table).set(DSL.row(fields()), select()) 这个功能可以添加到jOOQ 3.7中吗 我们现在可以使用哪种解决方法?很好,DSL API

我有两个函数:一个返回字段列表,另一个返回选择查询,该查询选择字段的相应值

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

private Select<?> select() {
    ...
}
无法更新表:

context.update(table).set(DSL.row(fields()), select())
这个功能可以添加到jOOQ 3.7中吗


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

很好,DSL API上缺少一个方法,它接受从中返回的类型作为第一个参数。这应针对jOOQ 3.7进行修正:

作为一种解决方法,如果你能忍受黑客的罪恶感,你可以选择原始类型:

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

您可以将DSL.rowfields强制转换为Row1,因为DSL.rowfields返回的内部实现类型实现了所有行[N]类型。

有罪的黑客使软件工作!谢谢你提供的信息。我想我问错问题了。我需要updatetable.setrow表达式,选择要转换为更新表集字段_1=alias.field_1,字段_2=alias.field_2。。。从中选择查询作为别名。但它被转换为更新表集字段_1,字段_2,…=选择对PostgreSQL无效的查询。我应该为此提出一个新问题吗?@KevinDeGrote:这个翻译看起来很有趣。也许我们可以在较旧版本的PostgreSQL中实现这一点。另一方面,PostgreSQL 9.5现在支持以下标准语法:。使现代化FROM由jOOQ支持。如果你不能让它发挥作用,请随意问另一个问题。我会在附近:我会尝试一下。这里唯一的问题是,我想我不能用流畅的风格写这篇文章,因为我必须写.setfield,每个字段的值。我从一张清单开始。不过这没什么大不了的,地图根本就没有必要。这可以正常工作:context.updatetable.setRow1 DSL.rowfields,Row1 select.fieldsRow.fromselect。谢谢你的反馈!在JOOQ3.7中,我应该删除行1的类型转换。类似的问题:
context.update(table).set((Row1) DSL.row(fields()), (Select) select())