En PostgreSQL puede usar una expresión que puede hacer uso de los valores de columna para la fila dada para definir el valor en la declaración establecida, es decir
UPDATE some_table SET col_a = (col_b != 1) WHERE col_c = 'some val'¿Hay alguna manera de hacer esto en JOOQ? - Revisé la documentación de JOOQ, pero no puedo ver ninguna referencia a ella.
Supongo que col_a es un Field<Boolean> , en cuyo caso, puede envolver una Condition en una expresión Field<Boolean> usando DSL.field(Condition)
// As always, assuming you have this static import: import static org.jooq.impl.DSL.*; ctx.update(SOME_TABLE) .set(SOME_TABLE.COL_A, field(SOME_TABLE.COL_B.ne(1))) .where(SOME_TABLE.COL_C.eq("some val")) .execute();Siguiendo https://www.jooq.org/doc/3.13/manual/sql-building/sql-statements/update-statement/#N6ABB6 , creo que harías
update(SOME_TABLE) .set(row(SOME_TABLE.A), row(SOME_TABLE.B.neg())) .where(SOME_TABLE.C.eq("some val"));