Spring save() вставка вместо слиянияJAVA

Программисты JAVA общаются здесь
Гость
Spring save() вставка вместо слияния

Сообщение Гость »


Я искал похожие темы и, к сожалению, не помог.

Я начинаю с кнопки для редактирования произвольного задания

Изменить Контроллер обрабатывает это следующим образом:

// показываем форму обновления @RequestMapping(value = "/updateprep/{id}", метод = RequestMethod.GET) public String showUpdateUserForm(@PathVariable("id") Длинный идентификатор, модель модели) { Задание jobToUpdate = репозиторий.findById(id).orElseThrow(); model.addAttribute("updateJob", jobToUpdate); если (log.isDebugEnabled()) { log.debug("/updateprep: будет редактировать задание с идентификатором {}", id); log.debug("/updateprep: Задание — {}", jobToUpdate); } вернуть «обновить задание»; } Это предоставляет форму для обновления Задания, которое должно иметь правильный Задание, найденное по его идентификатору. Проверка моего журнала отладки в контроллере выше показывает, что был найден правильный.

Обновить задание Дата Время Место Сумма Оплачивается Платно Заметки Сохранить Это несложная процедура сохранения, но именно в этот момент идентификатор становится нулевым, и в результате правильное Задание не обновляется, а полностью в таблицу базы данных вставляется новая строка:

@RequestMapping(value = "/savejob", метод = RequestMethod.POST) // публичная строка saveJob(@RequestParam Job updateJob) { public String saveJob(@ModelAttribute("updateJob") Job updateJob) { если (log.isDebugEnabled()) { log.debug("/savejob: сохранение задания с идентификатором {} и датой {}", updateJob.getId(), updateJob.getDate()); } репозиторий.save(updateJob); вернуть «панель управления»; } Определение Job включает в себя:

@Entity общественный класс Job { @Идентификатор // @GeneratedValue(strategy=GenerationType.SEQUENCE) @GeneratedValue(стратегия = GenerationType.IDENTITY) // @GeneratedValue(strategy=GenerationType.AUTO) частный длинный идентификатор; @Column(name = «Дата», nullable = false, columnsDefinition = «ДАТА») частная дата LocalDate; личное струнное место; частная двойная сумма; @Column(name = "Выставлен счет", nullable = false, columnsDefinition = "TINYINT(1)") частный логический счет; @Column(name = «Оплачено», nullable = false, columnsDefinition = «TINYINT(1)») платное частное логическое значение; частные строковые заметки; Что происходит не так?

Вернуться в «JAVA»