JPARepository save() не обновляет все значения в БД. Но дает результат

Я пытаюсь обновить поля таблицы MySQL, используя JPARepository save(). Но save() обновляет поле, которое имеет значение null, но не обновляет поля, которые уже имеют некоторые значения.

значения в настоящее время в БД: место: ноль количество предметов: 2

Новые значения передаются в temp для обновления место : некуда количество предметов : 1

я пробовал с 1. сохранить(), 2. saveAndFlush с @Transaction 3. Снова извлек объект перед его обновлением.

public Cons updateCons(Cons temp, Cons con) {

Cons tempCons = consRepository.findOneByIdAndConstId(cons.getId(),cons.getConsId());
   // tempCons.setId(cons.getId());

    log.info("before saving cons :{}, count = {}",consignment.getConsId(),temp.getItemCount());
    tempCons.setItemCount(temp.getItemCount());
    tempCons.setplaceStatus("Noplace"); // this filed is currently null


    Cons result = consRepository.saveAndFlush(tempCons);
    log.info("after saving cons :{}, count = {}",cons.getConsId(),result.getItemCount()); // logs the updated value on itemCount.

}

Ожидаемый результат: itemcount должен быть обновлен новым значением. место должно быть обновлено с жестко заданным значением «Noplace»

Фактический результат: itemcount не обновляется в БД с новым значением. но место обновляется с "Noplace" Но журналы печатают новое значение как количество.

Вы изменили значение статуса после вашего метода saveAndFlush? Кроме того, лучше опубликовать весь класс с информацией о том, как обращаться с транзакциями.

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

Ответы 1

Я предполагаю, что вы либо снова меняете значение (после того, как журналы будут напечатаны другим методом), либо запускаете это как часть транзакции, которая где-то терпит неудачу и, следовательно, не фиксируется.

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