Closed LineNo2 closed 1 year ago
더티 체킹이란 JPA에서는 트랜잭션이 끝나는 시점에 변화가 있는 모든 엔티티 객체를 데이터베이스에 자동으로 반영해주는 것을 말한다. 따라서 굳이 DB에 save() 메소드를 사용하지 않아도 엔티티에 변화가 발생한 경우 트랜잭션이 종료되는 순간 update 쿼리가 자동으로 생성된다.
하지만 우리가 현재 사용하고 있는 것은 엔티티가 아닌 Document 라는 것을 망각하고 있었다.
따라서 더티 체킹에 의존하지 않고 직접 save() 메소드를 통해 변화가 발생한 모든 document를 갱신해주어야 한다.
회원의 Role
을 UNREGISTER
에서 CUSTOMER
로 변경한 이후 해당 document를 save() 메소드를 통해 변경된 값을 갱신시켜주어야 한다.
// update user role
user.register();
userRepository.save(user);
✏️ 설명
회원가입 요청을 보낸 후, 회원가입이 성공했음을 확인했음에도 불구하고, 회원정보를 조회하면 가입이 안된 유저라고 나오는 오류.
🌌 발생 Controller
users/register
및users/me
🧾 상황 재현
💻 결과