@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
public void updateUser(int userId, String newUsername, String newEmail) {
// 1. 엔터티 조회
Optional<User> optionalUser = userRepository.findById(userId);
// 2. 조회한 엔터티 수정
optionalUser.ifPresent(user -> {
user.setUsername(newUsername);
user.setEmail(newEmail);
// 여기에 필요한 다른 수정 로직을 추가할 수 있습니다.
});
// 3. 수정한 엔터티 저장 (flush)
// (이 부분은 @Transactional이 처리해주기도 합니다.)
}
}
- 직접적으로 sql문을 작성하고 싶지 않아서, chatGPT의 응답에 따라 작성 중에
Optional<UserEntity> user = userRepository.findByUserId(userId);
- 해당 줄에서 오류가 발생하여 확인 결과, UserEntity의 userId가 null일 수 없는 조건을 가지고 있었음. null 일 수 있는 객체 클래스를 감싸는 Optinoal이 필요가 없으므로 해당 조건 삭제
- setter 함수를 사용하여 수정을 진행할 예정
- token은 그 내부의 내용 수정 불가 → 즉, token에 담긴 내용을 변경하고자 한다면 token을 새로 생성해야 함