我正在编写基于Spring webflux的服务,该服务使用r2dbc从PostgreSQL读取数据。我需要使用最新版本的r2dbc,但是在使用TransactionSynchronizationManager spring-tx 5.2.0.RELEASE库时出现NoSuchMethodError异常。
我基本上需要知道什么是正确的spring-tx库版本,才能与spring-data-r2dbc的版本兼容,后者可以与最新的r2dbc-postgresql和r2dbc-spi库正常工作。
这是我的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] 在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>
答案 0 :(得分:0)
请使用以下依赖项组合:
或者,转到https://start.spring.io,以获得一个具有相互协作版本的依赖项管理的项目。