[Java] 11. 오류 no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
in Java on Java 개발 기록
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;
}
삽질.