작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
592
·
수정됨
0
@PostMapping("/items/{id}/edit")
public String updateItem(@PathVariable Long id, @ModelAttribute Item item) {
Item findItem = itemService.findById(item.getId());
//더티 체킹
findItem.setId(item.getId());
findItem.setName(item.getName());
findItem.setPrice(item.getPrice());
findItem.setStockQuantity(item.getStockQuantity());
findItem.setAuthor(item.getAuthor());
findItem.setIsbn(item.getIsbn());
return "redirect:/items";
}
강의를 보지 않고 스스로 코드를 짜보고 있는데 이렇게 하니까 수정내역이 반영 되지 않더라구요 스스로 생각해봤을 때는 다음 2가지 이유 중 하나일 것 같은데 이유가 이유가 무엇인가요 ㅠㅠ?
findItem은 영속성 컨텍스트가 관리하지 않는 객체가 된 것이다. 따라서 더티체킹이 되지 않는다.
영속성 컨텍스트가 관리하는 엔티티는 맞지만 Controller에는 트랜잭션이 없어서 반영이 안되는 것이다.