Как разрешить NoSuchMethodError весной TransactionSynchronizationManager.currentTransaction при использовании pring-data-r2dbc - PullRequest
0 голосов
/ 30 октября 2019

Я пишу сервис на основе Spring webflux, который читает данные из PostgreSQL с использованием r2dbc. Мне нужно использовать последний выпуск r2dbc, однако я получаю исключение NoSuchMethodError при использовании библиотеки TransactionSynchronizationManager spring-tx 5.2.0.RELEASE.

Мне нужно знать, какая версия библиотеки 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>

1 Ответ

0 голосов
/ 31 октября 2019

Пожалуйста, используйте следующую комбинацию зависимостей:

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

Либо перейдите на https://start.spring.io, чтобы получить управляемый зависимостями проект с работающими версиями. вместе.

...