[troubleShooting, Spring] Internal error - Type definition error(Response Getter, JPA, Fetch Lazy Loding, Entity to DTO ๋ฐํ์ค Type Error)Project/(๊ณตํต)troubleshooting2023. 8. 18. 17:22
Table of Contents
๐ก JPA Lazy Loding๊ด๋ จ ์ค๋ฅ์ธ์ค ์์์ผ๋, Dto ์ ์ฉ์ Response์ @Getter๋ฅผ ์์ฑํด์ฃผ์ง ์์ ๋ฐ์ํ ๋ฌธ์ ์๋ค.
์๋ฌ์ฝ๋
"Internal error - Type definition error: [simple type, class wanted.preonboarding.backend.post.dto.PostResponse] \n cause : com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class wanted.preonboarding.backend.post.dto.PostResponse and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0])"
ํต์ฌ ์์
- ๊ฒ์๊ธ ๋ชฉ๋ก ์ด๋ API ๊ฐ๋ฐ ๋์ค Type definition ์๋ฌ๋ฅผ ํ์ธํ์๊ณ , JPA ์ 1:๋ค ์ํฐํฐ ๋งคํ์ Fetch Lazy Loding ๊ด๋ จ ์ด์์ธ์ค ์๊ณ @JsonIgnore ์ด๋
ธํ
์ด์
๊ณผ Hibernate.initialize(post.getAuthor()) ๋ฑ์ ์๋ํ์์ผ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๋ค.
- JPA ๊ด๋ จ ์ค๋ฅ์ ๊ฒฝ์ฐ ์ง์ฐ๋ก๋ฉ์ ์ํ ์ค๋ฅ์๋๋ฐ, ๋๋ ํด๋น ์ค๋ฅ๋ค์ ๋ฐฉ์งํ๊ธฐ ์ํด DTO๋ฅผ ๋์ ํ์๋๋ฐ๋ ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ์ ์ดํด๊ฐ ์ ๋์ง ์์๋ค...(๋น์ฐํ์ง ๋ฐ๋ณด์ผ)
- ์ถ๊ฐ์ ์ธ ํด๊ฒฐ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ ค๋ค๊ฐ, ๋๋ฒ๊น ์ค Controller์์ ๊ฐ์ ๋ฐํํ๋ ๊ณณ๊น์ง ๋ฌด์ฌํ dto์ ๊ฐ์ด ๋ด๊ฒจ์ ์ ๋ฌ๋์๋๊ฒ์ ํ์ธํ์๊ณ .. DTO ๊ฐ์ฒด๊ฐ ์์ฑ๊น์ง๋ ๋์ง๋ง ๋ชจ์ข ์ ์ด์ ๋ก JSON ํ ๋์ง ๋ชปํ๊ณ ์๋๊ฒ์ด๋ผ ์ถ์ธกํ๊ณ DTO ํ์ผ์ ๋ค์ ์ดํ๋ค.
- ๊ทธ ๊ฒฐ๊ณผ, Response ๊ฐ์ฒด์ @Getter๋ฅผ ์์ฑํด์ฃผ์ง ์์๋ค๋์ ์ ๋ฐ๊ฒฌํ์๊ณ Getter๊ฐ ์๊ธฐ๋๋ฌธ์ ๊ฐ์ ๊ฐ์ ธ์ค์ง ๋ชปํด response์ ์ ๋๋ก ๊ฐ์ ๋ด์ ์ ์์ด ๋ฐ์ํ๋ Type defenition error์์ ํ์ธํ์๋ค.
ํด๊ฒฐ๋ฐฉ์
๊ฐ๋จํ๊ฒ, response ์ Getter๋ฅผ ์ถ๊ฐํด์ค์ผ๋ก์จ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค
'Project > (๊ณตํต)troubleshooting' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
@Yanako :: Yana's coding story
์ผ๋์ ์ฝ๋ฉ ์ผ๊ธฐ์ฅ :) #์ฝ๋ฉ๋ธ๋ก๊ทธ #๊ธฐ์ ๋ธ๋ก๊ทธ #์ฝ๋ฉ #์กฐ๊ธ์ฉ,๊พธ์คํ
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!