Как отключить автоматическую фиксацию Postgres в Spring Data R2DBC

Я вижу, что в настоящее время вы можете отключить auto-commit на Connection объекте. Но когда вы работаете с Spring Data, у вас нет доступа к объекту Connection.

Кроме того, в Postgres нет этой функции как части URL-адреса подключения.

Кто-нибудь знает, как его выключить навсегда?


person Max Grigoriev    schedule 28.11.2019    source источник


Ответы (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 доступно распространение и сброс элементов управления Auto-Commit и Isolation Level через TransactionDefinition.

См. Эту ветку: https://github.com/r2dbc/r2dbc-spi/pull/95

person NikolaB    schedule 02.12.2019
comment
Проблема в том, что я хочу это из весенних данных. - person Max Grigoriev; 03.12.2019
comment
@MaxGrigoriev Взгляните на ссылку, добавленную в ответ, чтобы продолжить расследование. - person NikolaB; 03.12.2019
comment
Насколько я понимаю, спецификации есть, но Spring Data еще не поддерживает все функции. - person Max Grigoriev; 03.12.2019