【发布时间】:2020-03-24 14:04:14
【问题描述】:
我看到目前,您可以在 Connection 对象上禁用 auto-commit。但是当您使用 Spring Data 时,您无权访问 Connection 对象。
此外,Postgres 没有此功能作为连接 URL 的一部分。
有人知道如何永久关闭它吗?
【问题讨论】:
标签: postgresql r2dbc spring-data-r2dbc
我看到目前,您可以在 Connection 对象上禁用 auto-commit。但是当您使用 Spring Data 时,您无权访问 Connection 对象。
此外,Postgres 没有此功能作为连接 URL 的一部分。
有人知道如何永久关闭它吗?
【问题讨论】:
标签: postgresql r2dbc spring-data-r2dbc
我不知道是否有办法永久禁用它,但您可以稍微低级并使用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-Commit 和 Isolation Level 控制。
【讨论】: