如何在Spring Data R2DBC中禁用Postgres自动提交

时间:2019-11-28 22:46:43

标签: postgresql r2dbc spring-data-r2dbc

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

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

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

1 个答案:

答案 0 :(得分:0)

我不知道是否有一种方法可以永久禁用它,但是您可以稍微降低一点,并使用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传播和重置自动提交隔离级别控制。

查看此线程:https://github.com/r2dbc/r2dbc-spi/pull/95