微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 quarkus

如何解决如何在 quarkus

https://quarkus.io/guides/reactive-sql-clients 页面中,我们有使用事务执行查询更改的代码片段:

     sqlClientHelper.inTransactionUni(client,tx -> tx
    .preparedQuery("INSERT INTO person (firstname,lastname) VALUES ($1,$2) RETURNING id").execute(Tuple.of(person.getFirstName(),person.getLastName()))
    .onItem().transformToUni(id -> tx.preparedQuery("INSERT INTO addr (person_id,addrline1) VALUES ($1,$2)")
    .execute(Tuple.of(id.iterator().next().getLong("id"),person.getLastName()))).onItem().ignore().andContinueWithNull());

所以这里 sqlClientHelper 将开始事务,如果有任何失败,提交和回滚,但有没有办法找出失败的根本原因并将其打印在日志中? 在文档中它没有提到我们如何做到这一点。

解决方法

您可以使用 Mutiny 的 onFailure 来获取异常类并对其进行操作。有关详情,请参阅 this

,

根据接受的答案中给出的链接,这对我有用:

return SqlClientHelper.inTransactionUni(mysqlPool,tx -> {
        return tx.query(query).execute().onItem().transformToUni(
                id -> tx.query("SELECT TRAN_ID FROM " + tableName + " 
ORDER BY TO_DB_TS DESC LIMIT 1").execute())
                .onItem().transform(rows -> 
rows.iterator().next().getString(0)).onFailure().invoke(f -> {
                    LOG.error("Error while inserting data to " + 
tableName + " table::"+f.getMessage());
                });
    }); 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。