@JsonIgnore

양방향 연관관계에서는 둘중 하나를 @JsonIgnore 해줘야 한다.

그렇지 않으면 무한루프에 빠질 수 있다.

 

예시

@Entity
@Table(name = "orders")
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "member_id")
    private Member member;

    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
    private List<OrderItem> orderItems = new ArrayList<>();

    @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "delivery_id")
    private Delivery delivery;

    private LocalDateTime orderDate; // 주문시간

    private OrderStatus status; // 주문상태 : [ORDER, CANCEL]

	............
}

 

@Entity
@Getter @Setter
public class Member {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id")
    private Long id;

    @NotEmpty
    private String name;

    @Embedded // 내장type 을 포함했다.
    private Address address;

    @JsonIgnore // JSON으로 표현해줄때 제외한다
    @OneToMany(mappedBy = "member") // Order 테이블의 member에 의해 매핑된다.
    private List<Order> orders = new ArrayList<>();
}

'📚 Spring > Spring JPA' 카테고리의 다른 글

[정리] 플러시 (flush())  (0) 2022.03.16
[정리] 영속성 컨텍스트 및 엔티티  (0) 2022.03.15
[Spring JPA #12] 커스텀 리포지토리  (0) 2020.07.22
[Spring JPA #11] 쿼리 실습  (0) 2020.07.19
[Spring JPA #7] Query  (0) 2020.07.15

댓글

Designed by JB FACTORY