следующие методы моего контроллера:
@RequestMapping(value="/updateApi", method=RequestMethod.POST)
public String updateApiPost(@ModelAttribute("api") Api api, HttpServletRequest request) {
adminAppLogger.info("Attempting to update api with id {}:"+api.getId()+" title: {}"+api.getTitle());
apiService.save(api);
MultipartFile apiImage = api.getApiImage();
if(!apiImage.isEmpty()) {
try {
byte[] bytes = apiImage.getBytes();
String name = api.getId() + ".png";
Files.delete(Paths.get("src/main/resources/static/image/api/"+name));
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(new File("src/main/resources/static/image/api/" + name)));
stream.write(bytes);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
adminAppLogger.info("Successfully updated api with title {}:"+api.getTitle()+" {"+api+"}");
return "redirect:/api/apiInfo?id="+api.getId();
}
Это мой метод GET, когда я нажимаю кнопку обновления, он показывает мою форму с уже существующей информацией о сущности из базы данных MYSQL
@RequestMapping("/updateApi")
public String updateApi(@RequestParam("id") Long id, Model model) {
Api api = apiService.findOne(id);
model.addAttribute("api", api);
return "updateApi";
}
Я ожидаю, что он обновит БД, но он вставит новую запись в журналы БД: Hibernate: вставьте в api_info (активный, автор, категория, код, дата, описание, data_json, number_of_lines, прогресс, проект, response_json, заголовок, url) значения (?,?,?,?,?,?,?,?,?,?,?,?,?)
Follwing - мой сервис и хранилище:
@Service
public class ApiServiceImpl implements ApiService{
@Autowired
private ApiRepository apiRepository;
public Api save(Api api) {
return apiRepository.save(api);
}
public List<Api> findAll() {
return (List<Api>) apiRepository.findAll();
}
public Api findOne(Long id) {
return apiRepository.findOne(id);
}
public void removeOne(Long id) {
apiRepository.delete(id);
}
}
Репозиторий:
public interface ApiRepository extends CrudRepository<Api, Long>{
}