我有一个数据库表,其中包含有关发布的信息。版本具有次要版本号,这是一个整数。我想执行一个查询,该查询读取给定版本中的值,并返回表中所有字段的当前值(减去ID),次要版本增加1。
下面的查询返回当前值,但我无法弄清楚如何获取当前值并将其增加一。
select(Arrays
.stream(V_RELEASE.fields())
.filter(f -> !f.equals(V_RELEASE.ID))
.map(f -> f.equals(V_RELEASE.MINOR_VERSION)
? V_RELEASE.MINOR_VERSION <-- I want to increase this by 1
: V_RELEASE.field(f))
.collect(Collectors.toList()))
.from(V_RELEASE)
.where(V_RELEASE.ID.eq(id))
我确信这有一个非常简单的解决方案,但是我一直在墙上撞了几个小时,现在无济于事。任何人都可以用正确的语法帮助一个jOOQ新手吗?
添加了上下文:
我的回答基于对以下问题的回复:
JOOQ fetch record from table and insert it into another table
完整的查询应该基于现有的记录创建一个新记录,次要版本增加1,看起来像这样:
ctx
.insertInto(V_RELEASE)
.columns(Arrays.stream(V_RELEASE.fields())
.filter(f -> !f.equals(V_RELEASE.ID))
.collect(Collectors.toList()))
.select(
select(Arrays
.stream(V_RELEASE.fields())
.filter(f -> !f.equals(V_RELEASE.ID))
.map(f -> f.equals(V_RELEASE.MINOR_VERSION)
// I want to increase the minor version number by 1
? V_RELEASE.MINOR_VERSION
: V_RELEASE.field(f))
.collect(Collectors.toList()))
.from(V_RELEASE)
.where(V_RELEASE.ID.eq(id))
)
.execute();
答案 0 :(得分:1)
稍后有点RTFMing我发现答案非常简单。 jOOQ支持arithmetic functions on columns,所以我可以在列上调用.add(1)来到达我想要的位置:
window.location