Skip to content

Commit a3eae48

Browse files
authored
Merge pull request #24 from 2024-capstone-project/fix/#1
fix : infinite recursion
2 parents 9e8aef2 + a1f007a commit a3eae48

5 files changed

Lines changed: 34 additions & 3 deletions

File tree

src/main/java/djj/spitching_be/Controller/PresentationController.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ public PresentationController(PresentationService presentationService, Presentat
2929

3030
// 발표 생성
3131
@PostMapping("/presentations")
32-
public ResponseEntity<Presentation> createPresentation(
32+
public ResponseEntity<PresentationResponseDto> createPresentation(
3333
@RequestBody PresentationRequestDto requestDto,
3434
@AuthenticationPrincipal OAuth2User principal) {
3535
String email = principal.getAttribute("email");
36-
return ResponseEntity.ok(presentationService.createPresentation(requestDto, email));
36+
Presentation presentation = presentationService.createPresentation(requestDto, email);
37+
return ResponseEntity.ok(new PresentationResponseDto(presentation));
3738
}
3839

3940
// 특정 사용자가 자신의 발표 연습 목록 조회하기

src/main/java/djj/spitching_be/Domain/Presentation.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
77
import lombok.Setter;
8+
import net.minidev.json.annotate.JsonIgnore;
89

910
import java.util.List;
1011

@@ -32,6 +33,7 @@ public class Presentation extends Timestamped{
3233
@OneToMany(mappedBy = "presentation", cascade = CascadeType.ALL)
3334
private List<PresentationSlide> slides;
3435

36+
@JsonIgnore
3537
// 하나의 유저는 여러 발표 연습을 가질 수 있다.
3638
@ManyToOne(fetch = FetchType.LAZY)
3739
@JoinColumn(name= "user_id", nullable = false)

src/main/java/djj/spitching_be/Domain/User.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Builder;
55
import lombok.Getter;
66
import lombok.NoArgsConstructor;
7+
import net.minidev.json.annotate.JsonIgnore;
78
import org.hibernate.annotations.DynamicUpdate;
89

910
import java.util.ArrayList;
@@ -32,6 +33,7 @@ public class User {
3233
@Column(nullable = false)
3334
private String picture;
3435

36+
@JsonIgnore
3537
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
3638
private List<Presentation> presentations = new ArrayList<>();
3739

src/main/java/djj/spitching_be/Dto/PresentationResponseDto.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@
1111
public class PresentationResponseDto {
1212

1313
// presentation에서 값을 가져올 때 (응답 시) presentation(직접적인 entity) 대신 앞에 서줌
14+
private Long id;
1415
private String title;
1516
private String description;
1617
private LocalDateTime createdAt;
1718
private LocalDateTime updatedAt;
1819
private LocalDateTime deletedAt;
1920
private Integer practiceCount;
21+
private UserResponseDto user;
2022

2123
// presentation의 정보를 받아 presentationResponseDto 생성
2224
public PresentationResponseDto(Presentation presentation){
25+
this.id= presentation.getId();
2326
this.title = presentation.getTitle();
2427
this.description = presentation.getDescription();
2528
this.practiceCount = presentation.getPracticeCount();
2629
this.createdAt = presentation.getCreatedAt();
2730
this.updatedAt = presentation.getUpdatedAt();
2831
this.deletedAt = presentation.getDeletedAt();
29-
32+
this.user = new UserResponseDto(presentation.getUser());
3033
}
3134
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package djj.spitching_be.Dto;
2+
3+
import djj.spitching_be.Domain.User;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
@Getter
8+
@NoArgsConstructor
9+
public class UserResponseDto {
10+
private Long id;
11+
private String name;
12+
private String email;
13+
private String role;
14+
private String picture;
15+
16+
public UserResponseDto(User user){
17+
this.id = user.getId();
18+
this.name = user.getName();
19+
this.email = user.getEmail();
20+
this.role = user.getRole().toString();
21+
this.picture = user.getPicture();
22+
}
23+
}

0 commit comments

Comments
 (0)