From 840ec5256875c03ce2d20ba4f84774d9cb28a7df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=9C=A4?= <63058347+JungYoonShin@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:18:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[=E2=99=BB=EF=B8=8F=20refactor/#140]=20Inte?= =?UTF-8?q?rnshipAnnoucement=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - scrap 필드가 중복하여 존재하여, 옵션 합치고 하나는 삭제하였습니다. --- .../terning/terningserver/domain/InternshipAnnouncement.java | 5 +---- .../internship_announcement/InternshipRepositoryImpl.java | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java b/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java index aa21dba..711c8c1 100644 --- a/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java +++ b/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java @@ -48,7 +48,7 @@ public class InternshipAnnouncement extends BaseTimeEntity { @Column(nullable = false, length = 256) private String url; // 인턴십 공고 URL - @OneToMany(mappedBy = "internshipAnnouncement") + @OneToMany(mappedBy = "internshipAnnouncement", cascade = CascadeType.ALL) private List scraps; @Embedded @@ -66,9 +66,6 @@ public class InternshipAnnouncement extends BaseTimeEntity { @Column(nullable = false) private boolean isGraduating; // 졸업 예정 여부 - @OneToMany(mappedBy = "internshipAnnouncement", cascade = CascadeType.ALL) - private List scrapList = new ArrayList<>(); //스크랩 리스트 - public void updateViewCount(){ this.viewCount += 1; } diff --git a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java index 691dbac..20eef94 100644 --- a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java +++ b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java @@ -65,7 +65,7 @@ public Page searchInternshipAnnouncement(String keyword, List internshipAnnouncements = jpaQueryFactory .selectFrom(internshipAnnouncement) - .leftJoin(internshipAnnouncement.scraps) + .leftJoin(internshipAnnouncement.scraps, scrap) .where(contentLike(keyword)) .orderBy(sortAnnouncementsByDeadline().asc(), createOrderSpecifier(sortBy)) .offset(pageable.getOffset()) @@ -86,6 +86,7 @@ private BooleanExpression contentLike(String keyword) { //정렬 조건(5가지, 채용 마감 이른 순, 짧은 근무 기간 순, 긴 근무 기간 순, private OrderSpecifier createOrderSpecifier(String sortBy) { + System.out.println("sortBy = " + sortBy); return switch (sortBy) { case "mostViewed" -> internshipAnnouncement.viewCount.desc(); case "shortestDuration" -> getWorkingPeriodAsNumber().asc(); From abd09d00b99077270476cf91c3336bf87177beed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EC=9C=A4?= <63058347+JungYoonShin@users.noreply.github.com> Date: Fri, 27 Sep 2024 20:40:08 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[=F0=9F=94=A8fix/#140]:=20left=20join?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=A4=91=EB=B3=B5=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/terningserver/domain/InternshipAnnouncement.java | 4 ---- .../internship_announcement/InternshipRepositoryImpl.java | 5 +++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java b/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java index 711c8c1..ba15e99 100644 --- a/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java +++ b/src/main/java/org/terning/terningserver/domain/InternshipAnnouncement.java @@ -4,12 +4,8 @@ import lombok.Getter; import lombok.NoArgsConstructor; import org.terning.terningserver.domain.common.BaseTimeEntity; -import org.terning.terningserver.domain.enums.Grade; import java.time.LocalDate; -import java.time.YearMonth; -import java.util.ArrayList; -import java.util.Date; import java.util.List; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java index 20eef94..6e91497 100644 --- a/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java +++ b/src/main/java/org/terning/terningserver/repository/internship_announcement/InternshipRepositoryImpl.java @@ -7,6 +7,7 @@ import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; @@ -65,7 +66,6 @@ public Page searchInternshipAnnouncement(String keyword, List internshipAnnouncements = jpaQueryFactory .selectFrom(internshipAnnouncement) - .leftJoin(internshipAnnouncement.scraps, scrap) .where(contentLike(keyword)) .orderBy(sortAnnouncementsByDeadline().asc(), createOrderSpecifier(sortBy)) .offset(pageable.getOffset()) @@ -77,6 +77,7 @@ public Page searchInternshipAnnouncement(String keyword, .from(internshipAnnouncement) .where(contentLike(keyword)); + return PageableExecutionUtils.getPage(internshipAnnouncements, pageable, count::fetchOne); } @@ -101,7 +102,7 @@ private OrderSpecifier createOrderSpecifier(String sortBy) { public List findFilteredInternships(User user, String sortBy, int startYear, int startMonth){ return jpaQueryFactory .selectFrom(internshipAnnouncement) - .leftJoin(internshipAnnouncement.scrapList, scrap).on(scrap.user.eq(user)) + .leftJoin(internshipAnnouncement.scraps, scrap).on(scrap.user.eq(user)) .where( getGraduatingFilter(user), getWorkingPeriodFilter(user),