JOOQ - Java Math.max (x,y) 等效

JOOQ - Java Math.max (x,y) equivalent

我想创建一个 PostgreSQL 查询来更新下边界为零的多个列 (SMALLINT)。我在考虑 Java 方法 Math.max(x,y)。类似于 Math.max(columnValue, 0)。有个方法DSL.greatest(x,y),貌似很完美。但是,这只接受 Field 对象作为参数。

示例为:

dslContext
  .update(TABLE)
  .set(TABLE.COLUMN1, DSL.greatest(TABLE.COLUMN1.minus(1), (short) 0))
  .set(TABLE.COLUMN2, DSL.greatest(TABLE.COLUMN2.minus(1), (short) 0))
  ... some more
  .where(TABLE.ID.eq(tableId))
  .execute();

这会导致在零处出现编译错误。 是否可以用数字创建 Field 对象?或者我怎样才能以任何其他方式实现这一目标?

感谢您的支持。

使用 DSL.inline() 内联或 DSL.val() 绑定变量。

dslContext
  .update(TABLE)
  .set(TABLE.COLUMN1, DSL.greatest(TABLE.COLUMN1.minus(1), DSL.inline((short) 0)))
  .set(TABLE.COLUMN2, DSL.greatest(TABLE.COLUMN2.minus(1), DSL.inline((short) 0)))
  ... some more
  .where(TABLE.ID.eq(tableId))
  .execute();