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();
我想创建一个 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();