From b84a4f36796b7edef9384461f219d5d824557f33 Mon Sep 17 00:00:00 2001 From: baebae02 Date: Sun, 31 Mar 2024 15:09:21 -0500 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20groupby=EC=99=80=20sorting=EC=9D=98?= =?UTF-8?q?=20=EC=97=AD=ED=95=A0=EC=9D=84=20querydsl=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../querydsl/group/GroupRepositoryImpl.java | 13 ++++++++++++- .../com/uspray/uspray/service/GroupService.java | 13 +------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java b/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java index e19f0326..a0a9a64c 100644 --- a/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java +++ b/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java @@ -11,7 +11,9 @@ import com.uspray.uspray.DTO.group.response.GroupResponseDto; import com.uspray.uspray.DTO.group.response.QGroupMemberResponseDto; import com.uspray.uspray.DTO.group.response.QGroupResponseDto; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import org.springframework.util.StringUtils; @@ -25,7 +27,7 @@ public class GroupRepositoryImpl implements GroupRepositoryCustom { @Override public List findGroupListByMemberId(String userId) { - return queryFactory + List result = queryFactory .select(new QGroupResponseDto( group.id, group.name, @@ -42,6 +44,15 @@ public List findGroupListByMemberId(String userId) { .groupBy(group.id, group.name, group.leader.userId, groupPray.content) .orderBy(groupPray.createdAt.max().desc()) .fetch(); + return result.stream() + .collect(Collectors.groupingBy(GroupResponseDto::getId)) + .values().stream() + .map(groupResponseDtos -> groupResponseDtos.stream() + .max(Comparator.comparing(GroupResponseDto::getUpdatedAt)) + .orElseThrow(() -> new IllegalArgumentException("그룹이 존재하지 않습니다."))) + .sorted( + Comparator.comparing(GroupResponseDto::getUpdatedAt).reversed()) // 최신 업데이트 날짜로 정렬 + .collect(Collectors.toList()); } @Override diff --git a/src/main/java/com/uspray/uspray/service/GroupService.java b/src/main/java/com/uspray/uspray/service/GroupService.java index cdb1a904..4091bd32 100644 --- a/src/main/java/com/uspray/uspray/service/GroupService.java +++ b/src/main/java/com/uspray/uspray/service/GroupService.java @@ -5,9 +5,7 @@ import com.uspray.uspray.DTO.group.response.GroupResponseDto; import com.uspray.uspray.infrastructure.GroupRepository; import com.uspray.uspray.util.MaskingUtil; -import java.util.Comparator; import java.util.List; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -21,16 +19,7 @@ public class GroupService { @Transactional(readOnly = true) public GroupListResponseDto getGroupList(String username) { List groupList = groupRepository.findGroupListByMemberId(username); - List filterMostRecentUpdatedAt = - groupList.stream() - .collect(Collectors.groupingBy(GroupResponseDto::getId)) - .values().stream() - .map(groupResponseDtos -> groupResponseDtos.stream() - .max(Comparator.comparing(GroupResponseDto::getUpdatedAt)) - .orElseThrow(() -> new IllegalArgumentException("그룹이 존재하지 않습니다."))) - .collect(Collectors.toList()); - - return new GroupListResponseDto(filterMostRecentUpdatedAt); + return new GroupListResponseDto(groupList); } @Transactional(readOnly = true) From ca173af3b58aebd6f81f2dd0cc24d238059bde3e Mon Sep 17 00:00:00 2001 From: baebae02 Date: Mon, 1 Apr 2024 20:39:26 -0500 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20null=20comparing=20error=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/querydsl/group/GroupRepositoryImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java b/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java index a0a9a64c..3775df3b 100644 --- a/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java +++ b/src/main/java/com/uspray/uspray/infrastructure/querydsl/group/GroupRepositoryImpl.java @@ -51,7 +51,9 @@ public List findGroupListByMemberId(String userId) { .max(Comparator.comparing(GroupResponseDto::getUpdatedAt)) .orElseThrow(() -> new IllegalArgumentException("그룹이 존재하지 않습니다."))) .sorted( - Comparator.comparing(GroupResponseDto::getUpdatedAt).reversed()) // 최신 업데이트 날짜로 정렬 + Comparator.comparing(GroupResponseDto::getUpdatedAt, + Comparator.nullsFirst(Comparator.naturalOrder())) + .reversed()) // 최신 업데이트 날짜로 정렬 .collect(Collectors.toList()); }