我有一个名为result的表,它没有主键(无法更改)。我想使用Jooq更新所有满足特定条件的记录。下面的代码不像我预期的那样工作。它插入新的记录,而不是更新现有的,我不明白。
public Mono<Result> update(Result result, String name) {
return Mono.from(ctx.update(RESULT)
.set(RESULT.STATUS, result.getStatus())
.where(RESULT.NAME.eq(name))
.returning()
)
.map(r -> r.into(Result.class));
1条答案
按热度按时间50few1ms1#
jOOQ 3.18在MariaDB 10.5中引入了
UPDATE .. RETURNING
的模拟,它本身不支持以下语法:总之,这种说法:
可以模拟如下:
但是很明显,这假设存在一个可以被
ON DUPLICATE KEY
子句匹配的主键(或唯一键)。换句话说,jOOQ可以模拟UPDATE .. RETURNING
* 只有 * 如果你有一些独特的约束,否则。是否应以错误的形式向用户说明这一要求是有争议的: