μ§μ°λ‘λ© λκ° λλ체 λλ°β¦
μΌλ§μ JPA κ°μλ₯Ό μκ° νλ©΄μ μλ°©ν₯ 맀νμ νμ§λ§κ³ , μΌλ¨ λ¨λ°©ν₯ 맀νμΌλ‘ μν°ν° μ€κ³λ₯Ό ν΄λΌ. κ·Έλ¦¬κ³ μ§μ°λ‘λ©μ μ¬μ©ν΄λΌ λΌλ λ§μ λ€μ μ λ 묡묡ν κ·Έλ₯Ό μννμ§λ§β¦ λ€μκ³Ό κ°μ μλ¬λ₯Ό λ§μ΄νμ΅λλ€. κ°λ°μμ μλ²μ§ μνλ μ΄κ² λ¬΄μ¨ μΌμΈκ°μβ¦ π«
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: j
ava.util.ArrayList[0]->wanted.assignment.pmsystem.domain.planner.board.dto.responses.BoardDetailResponse["taskDetailResponses"]->
java.util.ArrayList[0]->wanted.assignment.pmsystem.domain.planner.task.domain.Task["taskBox"]->
wanted.assignment.pmsystem.domain.planner.taskBox.domain.TaskBox["board"]->
wanted.assignment.pmsystem.domain.planner.board.domain.Board$HibernateProxy$Q6gL9Sv7["hibernateLazyInitializer"])
Plain Text
볡μ¬
μΌλ¨ λ¬Έμ κ° μκΈ΄ μν°ν°λ₯Ό μ΄ν΄λ³΄μμ΅λλ€. μλμ κ°μ΄ TaskBox(μΉΈλ°λ³΄λμ μ»¬λΌ λΆλΆ) κ° Many, Board κ° One μ΄λ―λ‘ λ§€νλ μ νκ³ β¦ λκ° λ¬Έμ κ° μμ΄λ³΄μλλ°μβ¦
@Entity
public class TaskBox {
// ...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
private Board board;
// ...
}
Java
볡μ¬
κ°λ°μμ μμ νν ꡬκΈλ§μ ν΅ν΄ μμΈμ μ°Ύμ μ μμμ΅λλ€. μν°ν°λ₯Ό μλμ κ°μ΄ μμ ν΄μ£Όλ λ¬Έμ λ ν΄κ²° λμλλ°μ, λλ체 @JasonIgnore μ΄ λκΈΈλ μ΄λ κ² μ½κ² ν΄κ²° λκ±ΈκΉμ?
@Entity
public class TaskBox {
// ...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_id")
@JasonIgnore
private Board board;
// ...
}
Java
볡μ¬
FetchType.LAZY μ JSON μ§λ ¬ν
μ κ° λ§μ£Όν λ¬Έμ λ Hibernate κ° μ§μ° λ‘λ©μ μ²λ¦¬νλ λ°©μκ³Ό Jackson μ΄ μλ° κ°μ²΄λ₯Ό JSON μΌλ‘ μ§λ ¬ν νλ λ°©μκ³Ό κ΄λ ¨μ΄ μμμ΅λλ€. @ManyToOne(fetch = FetchType.LAZY) λ₯Ό μ¬μ©νλ©΄ Hibernate λ μ κ·Όμ νκΈ°μ κΉμ§ λ°μ΄ν°λ² μ΄μ€μμ κ°μ μ°Ύμμ€μ§ μμ΅λλ€. μ¦ νλ‘μ μν°ν°λ‘ μ‘°νλλ©°, μ€μ Board λ₯Ό μ¬μ©νλ μμ μ μ΄κΈ°ν λ©λλ€(DB μ‘°ν). μ΄λ λΆνμν λ°μ΄ν°λ² μ΄μ€ νΈμΆμ λ°©μ§νκ³ μ±λ₯μ ν₯μ μν΅λλ€. νμ§λ§ Jackson μ μ΄λ₯Ό μ§κΈ μ§λ ¬ν ν΄μΌ νλλ°μ Β λ°λ‘Β μ¬κΈ°μ λ¬Έμ κ° λ°μνλ κ² μ΄μμ΅λλ€.
μ¦, Jackson μ νλ‘μλ₯Ό μ§λ ¬ν ν μ μκΈ° λλ¬Έμ μμ κ°μ μ€λ₯κ° λ°μν©λλ€. λλ¬Έμ @JsonIgnore λ₯Ό μΆκ°νμ¬ Jackson μ΄ ν΄λΉ νλλ₯Ό 무μν μ μλλ‘ νλ©΄ λ¬Έμ λ ν΄κ²°λ©λλ€. λ§μ½ μλ°©ν₯ κ΄κ³μΈ κ²½μ° μμͺ½μ μ§λ ¬ν νλ©΄ 무ν μ¬κ·κ° λ°μν μ μμΌλ―λ‘ μ΄λ₯Ό μΆκ°νλ©΄ λμμ΄ λ©λλ€.