diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java index ec64fac8..d6159bef 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/repository/DirectMemberQueryDslRepository.java @@ -16,14 +16,22 @@ public class DirectMemberQueryDslRepository { private final QDirectMemberEntity directMemberEntity = QDirectMemberEntity.directMemberEntity; public List getDirectMessageList(final String currentUserId) { - return queryFactory - .select(directMemberEntity) + // Sub Query: 현재 사용자가 참여한 directId 목록 + var subquery = queryFactory + .select(directMemberEntity.directId) .from(directMemberEntity) .where( directMemberEntity.memberId.eq(currentUserId), directMemberEntity.deleted.isFalse() + ); + + // Main Query: 위 directId에 속한 모든 DirectMember 조회 + return queryFactory + .selectFrom(directMemberEntity) + .where( + directMemberEntity.directId.in(subquery) ) .fetch(); - } + } diff --git a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java index a03ce15a..1ac93583 100644 --- a/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java +++ b/src/backend/guild-server/src/main/java/com/asyncgate/guild_server/support/utility/DomainUtil.java @@ -119,6 +119,7 @@ public static DirectMemberEntity toEntity(final DirectMember directMember) { public static DirectMember toDomain(final DirectMemberEntity entity) { return DirectMember.builder() .id(entity.getId()) + .directId(entity.getDirectId()) .memberId(entity.getMemberId()) .memberName(entity.getMemberName()) .createdDate(entity.getCreatedDate())