[Java] 11. 오류 no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)


JPA 프로젝트를 진행하다 보니 원인을 이상한 포인트로 잡다 보니 시간을 많이 허비함. JPA와 별개 문제로….


오류


Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class  and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)


[오류 해결 전] Sample Board Entity

@Getter @Setter
public class Board implements Serializable {

    private Long boardId;

    private String title;
    
    private String contents;

    private class View {
        private Boolean onview;
        private String state;
    }

    public void View(Boolean onview, String state) {
        View view = new View();
        view.onview = onview;
        view.state = state;
        this.view = view;
    }

    private View view;
}



원인


springboot 설정이나 ObjectMapper를 이용해 json 으로 파싱할 때 객체 내에 필드에 대한 접근 권한이 없어서 발생

해결 방안 1

Serialize 시 해당 field에 @JsonIgnore annotation 추가해서 파싱 자체를 제외하는 방법


@JsonIgnore
private View view;


해결 방안 2

private 같은거 상관없이 ObjectMapper 에서 모든 field 를 접근 가능하게 옵션을 설정하거나,
접근 제어자를 public 으로 변경하면 원하는 json 파싱 후 클라이언트에 데이터를 준다.


public class View {
    public Boolean onview;
    public String state;
}

public void View(Boolean onview, String state) {
    View view = new View();
    view.onview = onview;
    view.state = state;
    this.view = view;
}




삽질.