66import org .springframework .data .jpa .repository .EntityGraph ;
77import org .springframework .data .jpa .repository .JpaRepository ;
88import org .springframework .data .jpa .repository .Query ;
9+ import org .springframework .data .repository .query .Param ;
910import org .springframework .stereotype .Repository ;
1011
1112import java .util .Optional ;
1415public interface PartyRepository extends JpaRepository <Party , Integer > {
1516
1617 @ Override
17- @ EntityGraph (attributePaths = {"leader" , "partyMembers.member" })
18+ @ EntityGraph (attributePaths = {
19+ "leader" ,
20+ "partyMembers.member" ,
21+ "partyMembers.member.title" ,
22+ "partyMembers.member.item"
23+ })
1824 Optional <Party > findById (Integer partyId );
1925
2026 @ Query (value = "SELECT DISTINCT p FROM Party p " +
2127 "LEFT JOIN FETCH p.leader l " +
2228 "LEFT JOIN FETCH p.partyMembers pm " +
2329 "LEFT JOIN FETCH pm.member mbm " +
30+ "LEFT JOIN FETCH mbm.title t " +
31+ "LEFT JOIN FETCH mbm.item i " +
2432 "LEFT JOIN Mission m ON m.party = p " +
2533 "WHERE p.isPublic = true" ,
2634 countQuery = "SELECT COUNT(p) FROM Party p WHERE p.isPublic = true" )
@@ -30,11 +38,13 @@ public interface PartyRepository extends JpaRepository<Party, Integer> {
3038 "LEFT JOIN FETCH p.leader l " +
3139 "LEFT JOIN FETCH p.partyMembers pm " +
3240 "LEFT JOIN FETCH pm.member mbm " +
33- "WHERE p.leader.id = :memberId " + // 리더인 경우
34- "OR EXISTS (SELECT pm2 FROM PartyMember pm2 WHERE pm2.party = p AND pm2.member.id = :memberId)" + // 멤버인 경우
35- "GROUP BY p.id, l.id, mbm.id, pm.status, pm.joinedAt" ,
41+ "LEFT JOIN FETCH mbm.title t " +
42+ "LEFT JOIN FETCH mbm.item i " +
43+ "WHERE p.leader.id = :memberId " +
44+ "OR EXISTS (SELECT pm2 FROM PartyMember pm2 WHERE pm2.party = p AND pm2.member.id = :memberId)" +
45+ "GROUP BY p.id, l.id, mbm.id, pm.status, pm.joinedAt, t.id, i.id" ,
3646 countQuery = "SELECT COUNT(DISTINCT p) FROM Party p " +
3747 "LEFT JOIN PartyMember pm ON pm.party = p " +
3848 "WHERE p.leader.id = :memberId OR pm.member.id = :memberId" )
39- Page <Party > findMyPartiesWithMissionAndMembers (Integer memberId , Pageable pageable );
49+ Page <Party > findMyPartiesWithMissionAndMembers (@ Param ( "memberId" ) Integer memberId , Pageable pageable );
4050}
0 commit comments