我正在编写基于 Spring webflux 的服务,它使用 r2dbc 从 PostgreSQL 读取数据。我需要使用最新版本的 r2dbc,但是在使用 TransactionSynchronizationManager spring-tx 5.2.0.RELEASE 库时出现 NoSuchMethodError 异常。
我基本上需要知道什么是正确的 spring-tx 库版本,才能与最新的 r2dbc-postgresql 和 r2dbc-spi 库正常工作的 spring-data-r2dbc 版本兼容。
这是我的 Maven 依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.0.0.M2</version>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-postgresql</artifactId>
<version>0.8.0.RC2</version>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-spi</artifactId>
<version>0.8.0.M8</version>
</dependency>
我正在使用接口扩展ReactiveCrudRepository
接口来检索下面的表格数据。
@Query("...")
Flux<QuoteHistory> findAllBySecIdAndDateTimeBetweenAndUpdateTypeIn(LocalDate date, Long secId);
我能够让这段代码与早期版本的 r2dbc-postgresql 和 r2dbc-spi 一起使用,但现在我遇到了以下异常。
java.lang.NoSuchMethodError: org.springframework.transaction.reactive.TransactionSynchronizationManager.currentTransaction()Lreactor/core/publisher/Mono;在 org.springframework.data.r2dbc.connectionfactory.ConnectionFactoryUtils.doGetConnection(ConnectionFactoryUtils.java:88) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2] 在 org.springframework.data。 r2dbc.connectionfactory.ConnectionFactoryUtils.getConnection(ConnectionFactoryUtils.java:70) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2] at org.springframework.data.r2dbc.core.DefaultDatabaseClient.getConnection (DefaultDatabaseClient.java:189) ~[spring-data-r2dbc-1.0.0.M2.jar:1.0.0.M2]
这些是代码使用的 r2dbc 依赖项。
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.0.0.M1</version>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-postgresql</artifactId>
<version>1.0.0.M7</version>
</dependency>