Эквивалент `set @variable = 0` в весенних данных jpa

Я пытаюсь выполнить следующие запросы за один раз в MySQL через spring data jpa.

    SET @i := 0;
    UPDATE tv_episode te SET te.display_episode_no= @i:=@i+1 WHERE te.tv_season_id=season ORDER BY broadcast_date;

Я попытался найти решение этой проблемы на StackOverflow, но не нашел.

Что эквивалентно SET @i := 0; в spring-data-jpa? Есть ли способ выполнить оператор в аннотированном методе @Modifying и @Query?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 115
1

Ответы 1

Вы можете запускать собственные запросы, добавив nativeQuery = true в @Query:

@Modifying
@Query(value = "SET @i := 0;\n" +
      "UPDATE tv_episode te SET te.display_episode_no= @i:=@i+1 WHERE te.tv_season_id = :season", nativeQuery = true)
int updateUserSetStatusForName(@Param("season") Integer season);

И если вы не хотите использовать собственный запрос, вы можете передать такие параметры:

@Modifying
@Query("update TvEpisode te set te.displayEpisodeNo = :epiodeNo where te.tvSeasonId = :season")
int updateUserSetStatusForName(@Param("epiodeNo") Integer epiodeNo, 
  @Param("season") Integer season);

Ваш первый запрос не будет принят из-за символа :: Space is not allowed after parameter prefix ':'

Gugelhupf 17.03.2021 00:25

Другие вопросы по теме