Jooq 更新 return 值

Jooq update return value

我尝试更新 table 中的行并在之后获得结果。 如果我这样做

dsl.update(TABLE)
   .set(TABLE.ROW, newRow)
   .where(TABLE.ROW_2.eq(
            dsl.select(ANOTHER_TABLE.ID)
               .from(ANOTHER_TABLE)
               .where(ANOTHER_TABLE.GUID.eq(guid))
   )).execute()

它returns 1. 但是如果我这样做

dsl.update(TABLE)
   .set(TABLE.ROW, newRow)
   .where(TABLE.ROW_2.eq(
            dsl.select(ANOTHER_TABLE.ID)
               .from(ANOTHER_TABLE)
               .where(ANOTHER_TABLE.GUID.eq(guid))
   )).returningResult(TABLE.ROW_3).fetchOne()

它returns 空结果。但是我想在更新后得到 TABLE.ROW_3 。有什么问题吗?

Vertica 不像 PostgreSQL 那样支持 UPDATE .. RETURNING,如 Vertica 文档中所示: https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/UPDATE.htm

UpdateReturningStep::returningResult 的 jOOQ 文档通过未在其 @Support 注释中列出 SQLDialect.VERTICA 反映了这一点:

@Support({AURORA_POSTGRES,COCKROACHDB,DB2,FIREBIRD,ORACLE,POSTGRES,SQLSERVER})

目前没有解决此问题的方法。如果你想避免使用这样的 API,你可以在你的构建中使用 jOOQ-checker 模块来在你使用 VERTICA[= 不支持的 API 时产生编译错误20=]