Я пытаюсь обновить поля таблицы 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? Кроме того, лучше опубликовать весь класс с информацией о том, как обращаться с транзакциями.