ERROR 18904 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is 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) (through reference chain: com.coderder.colorMeeting.dto.response.ResponseDto["data"]->java.util.ArrayList[0]->com.coderder.colorMeeting.model.Team$HibernateProxy$TrUXNCSE["hibernateLazyInitializer"])] with root cause
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) (through reference chain: com.coderder.colorMeeting.dto.response.ResponseDto["data"]->java.util.ArrayList[0]->com.coderder.colorMeeting.model.Team$HibernateProxy$TrUXNCSE["hibernateLazyInitializer"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77) ~[jackson-databind-2.13.3.jar:2.13.3]
at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1300) ~[jackson-databind-2.13.3.jar:2.13.3]
at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:400) ~[jackson-databind-2.13.3.jar:2.13.3]
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:46) ~[jackson-databind-2.13.3.jar:2.13.3]
at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:29) ~[jackson-databind-2.13.3.jar:2.13.3]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.13.3.jar:2.13.3]
...
fetchType์ DB์์ ์ํฐํฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋งคํ๋์ด์๋ ๋ค๋ฅธ ์ํฐํฐ์ ์ ๋ณด๋ฅผ ์ด๋ ์์ ์ ๊ฐ์ ธ์ฌ์ง๋ฅผ ์ ํ๋ ์ต์ ์ธ๋ฐ, ์ฐ๋ฆฌ ํ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ชจ๋ Entity์ ์ฐ๊ด๊ด๊ณ๋ฅผ fetchType = Lazy๋ก ์ค์ ํ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์๋ ์ด 3๊ฐ์ง๊ฐ ์๋ค.
application.properties์ย spring.jackson.serialization.fail-on-empty-beans=falseย ์ถ๊ฐํ๊ธฐ
๐๐ป ๊ทธ๋ฌ๋ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ด ์๋ ํ๋ฉด์ ์ธ ๋ฐฉ๋ฒ์ด๋ค. ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ ์ํด์ JSONํ์์ผ๋ก ๋ณํํ ์ง ๋ง์ง์ ๋ํด ์ ํด์ผํ๋ค.
์ ์ฅ ์ฑ๊ณตํ ๊ฐ์ฒด๋ฅผ ํ์ธ์ํค๊ธฐ์ํย JSON response์์ย ํด๋น column์ ์ ์ธํ๊ณ ๋ณด๋ธ๋ค. (@JsonIgnoreย ์ฌ์ฉ)
๐๐ป FetchType์ Lazy๋ก ์ ์งํ๊ณ ์ค๋ฅ์ ์์ธ๋ ์ ๊ฑฐ ๊ฐ๋ฅ
fetchType์์ฒด๋ฅผ EAGER๋ก ๋ณ๊ฒฝํ๋ค.
๐๐ป ์ด ๊ฒฝ์ฐ, EAGER๊ธฐ ๋๋ฌธ์ ๋จ์ํ TeamMEmber๋ง ์กฐํํ๊ณ ์ถ๋๋ผ๋ ๊ฐ Team, Member์ ์ ๋ณด๊น์ง ๋ชจ๋ ์กฐํํ๊ฒ ๋๋ค.
๋น๊ตํด๋ณด์์ ๋ 2๋ฒ์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ ๊ฐ์ง๋ง ํด๋น ํด๋์ค๋ค์ ๋ชจ๋ ์ฐ๊ด๊ด๊ณ column์ @JsonIgnore๋ฅผ ๋ถ์์์๋ ์๋ฌ๊ฐ ํด๊ฒฐ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค. ๋ฐ๋ผ์ 1๋ฒ์ ์ ์ฉํ๋ฉด response๊ฐ ์ค๊ธด ์ค๋๋ฐ, ์ฒ์ ๋ณด๋ ํ๋๊ฐ ํจ๊ป response๋์๋ค.
{
"success": true,
"data": [
{
"id": 1,
"name": "coderder",
"hibernateLazyInitializer": {}
},
{
"id": 2,
"name": "์์ธ 9์กฐ",
"hibernateLazyInitializer": {}
},
{
"id": 3,
"name": "์ฝํ
์คํฐ๋ Algogazaa",
"hibernateLazyInitializer": {}
},
{
"id": 13,
"name": "์ฌ์ด๋ํ๋ก์ ํธํ",
"hibernateLazyInitializer": {}
}
],
"error": null
}