유저 검색을 닉네임으로 하는 부분이 갑자기 고장났다

하나하나 코드를 찾아보며 따져보니

for(User searchUser : byNicknameContaining){
                boolean isFriend = false;
                for(UserFriend userFriend : userFriendByUser){
                    if(userFriend.getFriend().getUserNo().equals(searchUser.getUserNo())){
                        System.out.println(123);
                        UserSearchResultDTO searchResultDTO = new UserSearchResultDTO(searchUser, userFriend);
                        System.out.println(searchResultDTO.toString());
                        result.add(searchResultDTO);
                        isFriend = true;
                        break;
                    }
                }
                if(!isFriend){
                    UserSearchResultDTO searchResultDTO = new UserSearchResultDTO();
                    searchResultDTO.createSearchResultDTO(searchUser);
                    result.add(searchResultDTO);
                }
            }
            System.out.println(result);

            return result;

if(userFriend.getFriend().getUserNo() == searchUser.getUserNo()){

이 부분이 문제였다.

분명 UserNo는 Long값인데? 왜 ==은 안되고

.equals로 비교를 해야 찾는 거지?…

if(userFriend.getFriend().getUserNo().equals(searchUser.getUserNo())){

일단 이렇게 하니깐 찾아졌다.

와 이유를 알았다.

UserNo는 Long 타입인데 Long타입은 Wrapper 클래스이다.

long은 순수 자료형이다.

Long 타입의 경우

127 == 127은 되지만