오류 메시지

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:
No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

코드

// ArticleEntity

@Getter @Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Article extends BaseEntity {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="article_id")
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="board_id", nullable = false)
    private Board board;
}
// ArticleService

Article article = Article.builder()
                .title(articleCreateReq.getTitle())
                .content(articleCreateReq.getContent())
                .board(boardRepository.getById(articleCreateReq.getBoardId()))
                .build();
article = articleRepository.save(article);
        return article;
// ArticleController

@PostMapping()
    public AdvancedResponseBody<Article> createArticle(@RequestBody ArticleCreateReq articleCreateReq) {
        Article article = articleService.createArticle(articleCreateReq);
        System.out.println("article = " + article);
        return AdvancedResponseBody.of(Status.OK, article);
				// 이 과정에서 오류 발생
    }

원인

해결방법

  1. application 파일에 spring.jackson.serialization.fail-on-empty-beans=false 설정해주기
    1. 컬럼에 "hibernate_lazy_initializer": {} 이 생김
  2. 오류가 나는 엔티티의 LAZY 설정을 EAGER로 바꿔주기
    1. 해결 안됨
  3. 오류가 나는 컬럼에 @JsonIgnore를 설정해주기
    1. return 하는 객체에 설정한 컬럼이 제외됨
  4. Response를 직접 설정하기

내가 사용한 방법은

3 + 4