SOLUX-우리만 앱

Postman Unsupported Media Type 에러

leeeehhjj 2021. 8. 6. 18:37

스프링 시큐리티와 OAuth2를 이용하여 로그인 기능을 구현했고, 

그 후 User entity와 Notice 엔티티를 조인하는 과정 중에 계속 발생한 에러다.

이미 Notice 엔티티에는 Club 엔티티를 join 해놓은 상태였다.

@NoArgsConstructor
@Getter
@Entity
public class Notice extends BaseTimeEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(length = 500, nullable = false)
    private String title;

    @Column(columnDefinition = "TEXT", nullable = false)
    private String content;

    private String author;

    @JsonBackReference
    @ManyToOne
    @JoinColumn(name = "Club_ID")
    private Club club;

    @JsonBackReference
    @ManyToOne
    @JoinColumn(name = "User_ID")
    private User user;

    @Builder
    public Notice(String title, String content, String author
            , Club club) {
        this.title = title;
        this.content = content;
        this.author = author;
        this.club = club;
    }

    public void update(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

이렇게 한 후 postman에서 notice를 post 했더니 지원하지 않는 미디어 타입이라는 에러가 나왔다.


하지만

@JsonIgnore
@ManyToOne
@JoinColumn(name = "User_ID")
private User user;

@JsonBackReference 대신 @JsonIgnore을 사용했더니 오류가 발생하지 않았다.

@JsonIgnore을 사용하면 Notice를 조회할 때 User 정보는 json으로 보여주지 않는다.

 

@JsonBackReference가 2개라서 오류가 발생하는지 알아보려고 Club에 @JsonBackReference 대신 @JsonIgnore을 사용하고, User에 @JsonBackReference를 사용해봤더니 이때도 동일하게 415 에러가 뜨는 걸 알 수 있었다.

아마 User 정보에 이름을 받아와서 표시해주는 과정에서 발생한 오류인 것 같다.