[TIL] 최종 프로젝트 (7) - 연령대 즐겨찾기 커스텀 조회 (1) _ 실패

J쭈디·2025년 2월 18일
0

Sparta_프로젝트

목록 보기
18/35

정말 수면이 하고 싶지만, 즐겨찾기까지는 오늘 다 마치고 잠들고 싶다.

얼른 구현해야지이이..

1. 잠들지 말지어다 휴먼

나는 즐겨찾기 코드를 보고, 기어이 오늘은 일찍 자기 글렀다는 걸 깨달았다. 현 시각 벌써 밤 9시 30분, 하지만 나는 해야한다.

일단 망했다는 생각이 난 이유는 즐겨찾기로 조회해야 할 목록들 중에 List타입이 있다는 점이었다. 아니.. QureyDSL로 리스트 값을 속성으로 저장하는 건 듣도 보도 못했는데, 심지어 거기다가 연관관계도 오졌다. ^^

예 그러니까,,, 지금 제가 북마크를 조회해야하는데요. 연령대별로 구분하고 인기순도 나눠야 하는데 이 와중에 자격요건이 리스트 형식이고 그 리스트 형식은 키워드 테이블에 있는 키워드 이름을 가져와서 For문을 돌려서 생성한 녀석이로군요? 아하!

하지말까

일단 List 형식을 QueryDSL로 어떻게 한번에 가져오지... 다른 분들 코드를 보고, 구글링을 해봐도 JPQL이 나온다던가.. 너무 안되서 GPT한테 물어봐도 멍텅구리 같은 대답만 한다던가 문제가 많았다.. 무슨 Map을 사용해서 List를 따로 뽑고, 또 거기다 뭐 하랬더라..

아무튼 기가 차서 무시하고 가기로 했다.

2. 구현을 해보자 제발....

계속 빨간 줄이 안 사라져서 키워드에서 했던 것처럼 서브쿼리를 쓰려고 했지만, 서브쿼리 조차도 빨간줄이 안 사라졌다. 진짜 이게 될까? 저게 될까 하는 마음으로 여러가지 넣어봤으나 안된다... 안된다...

transform이나 별칭 사용할 때 썼던 그.. 익스프레스 뭐시기.. 그것도 써보고 별 난리를 쳐도 지금 안되고 있다.

이건 뭐지.... 잘 된거 같은데, 후아...진짜 모르겠다.
아무래도 단순히 GroupBy.list(jobOpeningKeyword.keyword.name) 이것만 써서는 안되는 게 맞는 거 같다.

<망했지만 열심히 사투한 흔적>

    List<BookmarkCustomAgeResponseDto> bookmarksByCustomAgeList =
    jpaQueryFactory.select(
                Projections.constructor(
                    BookmarkCustomAgeResponseDto.class,
                    bookmark.id,
                    jobOpening.company,
                    jobOpening.hiringStartAt,
                    jobOpening.hiringEndAt,
                    jobOpening.position,
                    GroupBy.list(jobOpeningKeyword.keyword.name) //이 부분 매우 어렵다.. 키워드 조회
                ))
            .from(bookmark)
            .join(bookmark.jobOpening, jobOpening)
            .join(bookmark.user, user)
            .leftJoin(jobOpening.jobOpeningKeywordList, jobOpeningKeyword)
            .where(
                user.age.between(requestDto.minAge(), requestDto.maxAge())
            )
            .groupBy(
                bookmark.id,
                jobOpening.id,
                jobOpening.company,
                jobOpening.hiringStartAt,
                jobOpening.hiringEndAt,
                jobOpening.position,
                user.age
            )
            .offset(pageable.getOffset())
            .limit(pageable.getPageSize())
            .fetch();

결론은 이 코드도 안 돌아간다는 거다. 더 하고 싶지만 벌써 자정이 가까운 시간이라 내일의 나의 컨디션을 위해서 일단 접어두고 잠에 들기로 했다.

흑흑... 시간 안에 다 구현을 못해서 너무 슬프다 지금...

<출처>
https://shyun00.tistory.com/234
https://new-age-jh.tistory.com/295
https://sjh9708.tistory.com/175

profile
언제 어느 위치에 있더라도 그 자리의 최선을 다 하는 사람이 되고 싶습니다.

0개의 댓글