На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Не отрабатывает метод save() из CrudRepository (никакого эффекта в БД)
    Добрый день! Подскажите пожалуйста, из-за чего может быть такое. При выполнении эндпоинта с методом PATCH не работает метод save() из CrudRepository. Никаких эксепшенов не возникает, просто в БД нет никакого эффекта после выполнения эндпоинта. Эндпоинт меняет статус банковской карты пользователя.
    ExpandedWrap disabled
      @Override
      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;
      }

    ExpandedWrap disabled
      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);
      }
      Дело оказалось в том, что над классом CardServiceImpl, содержащим метод changeStatus, висела @Transactional(readOnly = true). То есть, для решения моей проблемы нужно либо убрать эту @Transactional(readOnly = true) над классом, либо добавить @Transactional над методом changeStatus, тогда всё работает. Вариант с @Transactional и для класса и для методов в статье на хабре описывается как хороший, выберу его.
      Сообщение отредактировано: Leklerk -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0257 ]   [ 15 queries used ]   [ Generated: 27.04.24, 11:20 GMT ]