Не отрабатывает метод save() из CrudRepository (никакого эффекта в БД)

Подскажите пожалуйста, из-за чего может быть такое. При выполнении эндпоинта с методом PATCH не работает метод save() из CrudRepository. Никаких эксепшенов не возникает, просто в БД нет никакого эффекта после выполнения эндпоинта. Эндпоинт меняет статус банковской карты пользователя.

public boolean changeStatus(UUID cardId, String newStatus) {
    boolean result = false;
    Optional<Card> cardOpt = cardRepository.findById(cardId);
    if (cardOpt.isPresent()) {
        Card card = cardOpt.get();
        card.setStatusType(StatusType.valueOf(newStatus));
        cardRepository.save(card);
        result = true;
    }
    return result;
}

public interface CardRepository extends JpaRepository<Card, UUID> {
    List<Card> findCardsByAccountId(UUID accountId);
    List<Card> findCardsByClientId(UUID clientID);
    @Query(value = "SELECT status FROM card WHERE id = :cardId", nativeQuery = true)
    Optional<String> findStatusById(@Param("cardId") UUID cardId);
}

Ответы (1 шт):

Автор решения: leklerk

Дело оказалось в том, что над классом CardServiceImpl, содержащим метод changeStatus, висела @Transactional(readOnly = true). То есть, для решения моей проблемы нужно либо убрать эту @Transactional(readOnly = true) над классом, либо добавить @Transactional над методом changeStatus, тогда всё работает. Вариант с @Transactional и для класса и для методов в статье на хабре описывается как хороший, выберу его.

→ Ссылка