Spring R2DB C + SQL Сервер: запрос процедур - PullRequest
0 голосов
/ 24 марта 2020

Мне необходимо выполнить хранимую процедуру на сервере SQL для извлечения некоторых данных, и, поскольку я позже сохраню данные в Mon go, а этот с ReactiveMongoTemplate и так далее, я представил Пружина R2DB C.

    implementation("org.springframework.data:spring-data-r2dbc:1.0.0.RELEASE")
    implementation("io.r2dbc:r2dbc-mssql:0.8.1.RELEASE")

Я вижу, что могу сделать SELECT и INSERT и так далее с R2DB C, но возможно ли EXEC prod_name? Я пробовал, и он зависает навсегда, а затем тест завершается , но безуспешно, но без сбоев. Последняя строка журнала:

io.r2dbc.mssql.QUERY - Executing query: EXEC "SCHEMA"."MY_PROCEDURE" 

Код выглядит так:

    public Flux<Coupon> selectWithProcedure() {
        return databaseClient
                .execute("EXEC \"SCHEMA\".\"MY_PROCEDURE\" ")
                .as(Coupon.class)
                .fetch().all()
                .doOnNext(coupon -> {
                    coupon.setCouponStatusRefFromId(coupon.getCouponStatusRefId());
                });
    }

И, похоже, данные не извлекаются.

Если я тестирую некоторые другие методы с простыми запросами, такими как SELECT..., это работает. Но проблема в том, что администраторы БД не позволяют моему приложению читать данные таблиц, вместо этого они создают для меня процедуру. Если этот запрос невозможен, я должен go традиционным способом JPA и реагировать на сторону Mon go потерял смысл.

1 Ответ

0 голосов
/ 24 марта 2020

Хорошо. Я только что видел это:

https://github.com/r2dbc/r2dbc-mssql, версия 0.8.1:

Следующие шаги:

  • Выполнение сохраненных процедуры
  • Добавлена ​​поддержка TVP и UDT

И:

https://r2dbc.io/2019/05/13/r2dbc-0-8-milestone-8-released

У нас уже есть несколько заявок на следующую веху, и мы знаем, что они потребуют дальнейших изменений SPI:

  • Поддержка автоматической фиксации
  • Проверка подключения
  • Поддержка хранимых процедур
...