При реализации данных, модифицирующих логи c с использованием аннотации Query
(insert
, update
или delete
) в JpaRepository
, как @Transactional
(необязательно в методе хранилища), так и @Modifying
должны быть использованы.
Мое понимание заключается в следующем. Все грубые операции, предоставляемые JpaRepository
, являются транзакционными, если мы их не перезаписываем. При реализации метода в репозитории мы должны убедиться, что он все еще транзакционный. Это может быть достигнуто простым аннотированием @Transactional
. Значение по умолчанию readOnly
равно false
, поэтому spring "знает", что это модифицирующий запрос.
Вопрос в следующем: зачем нам тогда аннотация @Modifying
(вместе с @Transactional
)? Может быть, я что-то упускаю?
Мне известны такие обсуждения, как this или that , но я упускаю явное объяснение почему необходимо использовать @Modifying
, если @Transactional
несет всю необходимую информацию.