【问题标题】:How to disable Postgres auto-commit in Spring Data R2DBC如何在 Spring Data R2DBC 中禁用 Postgres 自动提交
【发布时间】:2020-03-24 14:04:14
【问题描述】:

我看到目前,您可以在 Connection 对象上禁用 auto-commit。但是当您使用 Spring Data 时,您无权访问 Connection 对象。

此外,Postgres 没有此功能作为连接 URL 的一部分。

有人知道如何永久关闭它吗?

【问题讨论】:

    标签: postgresql r2dbc spring-data-r2dbc


    【解决方案1】:

    我不知道是否有办法永久禁用它,但您可以稍微低级并使用Connection 对象设置auto-commit 功能:

    @Autowired
    private ConnectionFactory connectionFactory;
    
    public Flux<Integer> insertSmth() {
            return Mono.from(connectionFactory.create())
                    .flatMapMany(connection ->
                            Flux.from(connection.setAutoCommit(false))
                                    .thenMany(connection.beginTransaction())
                                    .thenMany(connection.createStatement("INSERT INTO ...").execute())
                                    ...
    }
    

    编辑: 我似乎在 Spring Data R2DBC 1.0.0 RC1 中可以通过 TransactionDefinition 传播和重置 Auto-CommitIsolation Level 控制。

    看到这个帖子:https://github.com/r2dbc/r2dbc-spi/pull/95

    【讨论】:

    • 问题是我想从spring数据中得到它。
    • @MaxGrigoriev 查看答案中添加的链接以进一步调查。
    • 据我了解有规范,但 Spring Data 尚未支持所有功能。
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多