반응형

RestController 에서 Josn 형식으로 값을 잘 받아오던게 갑자기 안된다.

No serializer found for class org.hibernate

이런 에러가 나온다.

 

@ManyToOne에서 fetch=FetchType.LAZY 전략을 써서 

Hibernate에서 LAZY 로딩으로 인한 JSON Serialization에러가 발생한 것이라고 한다.

 

그런데 나는 fetch 설정을 한적이 없다..

심지어 @ManyToOne에서 fetch의 default 값은 EAGER 이다

 

default값

OneToMany: LAZY

ManyToOne: EAGER

ManyToMany: LAZY

OneToOne: EAGER

 

해결은

해당 Object를 JSON으로 변환하지 않는다면, @JsonIgnore 어노테이션을 nested 객체에 붙인다

@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})

 

이 방법으로 해결했다..

 

다른 방법으로는 application.properties 에 spring.jackson.serialization.fail-on-empty-beans=false

이 설정을 추가 하면 된다.

 

그런데 에러를 보이지 않게만 하는 방식이라 어떤 위험이 있을지는 모르겠다..

 

반응형

+ Recent posts