0

我正在编写基于 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>
4

1 回答 1

0

请使用以下依赖组合:

  • R2DBC Postgres:0.8.0.RC2
  • R2DBC SPI:0.8.0.RC2
  • Spring Data R2DBC:1.0.0.RC1
  • Spring 框架:5.2.0.RELEASE

或者,转到https://start.spring.io以获取一个依赖项管理的项目,其版本可以协同工作。

于 2019-10-31T14:32:51.627 回答