mutiny/jooq 中的异步事务处理

Asynchronous transaction handling in mutiny/jooq

提问人:Nikolas 提问时间:11/6/2023 最后编辑:Nikolas 更新时间:11/9/2023 访问量:49

问:

我正在尝试在单个事务中保存两个对象。如果出错,我希望我的事务回滚。

以下是当前的尝试:

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

爪哇 Jooq 叛变

评论

1赞 Lukas Eder 11/7/2023
你如何配置你的?configuration
0赞 Nikolas 11/7/2023
更新了带配置的问题

答: 暂无答案