提问人:Nikolas 提问时间:11/6/2023 最后编辑:Nikolas 更新时间:11/9/2023 访问量:49
mutiny/jooq 中的异步事务处理
Asynchronous transaction handling in mutiny/jooq
问:
我正在尝试在单个事务中保存两个对象。如果出错,我希望我的事务回滚。
以下是当前的尝试:
public Uni<Response> save(...) {
return Uni
.createFrom()
.completionStage(dslContext.transactionResultAsync(configuration -> repo
.insert(... , configuration.dsl())
.flatMap(dataRecord -> Uni
.createFrom()
.publisher(configuration
.dsl()
.insertInto()
.set()
.returning())
.map(ignore -> Response
.builder()
.build()))))
.flatMap(i -> i);
看起来像:repo.insert
Uni<DataRecord> insert(..., DSLContext dslContext) {
return Uni
.createFrom()
.publisher(dslContext
.insertInto()
.set()
.returning())
.map(dataRecord -> new DataRecord()
.set(...))));
该配置基于 quarkus-jooq 自定义上下文版本 2.0,增加了两个功能:
settings.setBindOffsetDateTimeType(true);
settings.setRenderSchema(true);
然而。如果第二次插入失败,则不会发生回滚(我通过违反约束来强制回滚)。我在测试中看到了异常。我还看到了第一个对象。那么,怎样才能解决问题呢?not null
答: 暂无答案
评论
configuration