[SPRING] 어떤 엔티티가 참조인지에 따라 @JsonBackReference와 @JsonManagedReference를 바꾸는 방법
SPRING어떤 엔티티가 참조인지에 따라 @JsonBackReference와 @JsonManagedReference를 바꾸는 방법
@JsonBackRefence 및 @JsonManagedReference를 연결된 저장소에서 참조하는 엔티티를 기반으로 바꿀 수있는 방법을 찾으려고합니다.
Site.java
@Entity
@Table(name = "Site")
public class Site {
@Id
private String id;
@OneToMany(mappedBy="site")
@JsonManagedReference
private List<Building> buildings;
}
Building.java
@Entity
@Table(name = "building")
public class Building{
@Id
private String id;
@ManyToOne
@JoinColumn(name = "SITE_ID")
@JsonBackReference
private Site site;
}
SiteRepository.java
public List<Site> findAll(); //Works as intended
BuildingRepository.java
public Building findById(buildingId); //Works if references are swapped
그러나 findById (buildingId)를 호출 할 때 @JsonBackReference를 교체해야합니다. 따라서 @JsonBackReference는 Site.java에 있고 @JsonManagedReference는 Building.java 엔티티에 있습니다.
참고 : @JsonIdentityInfo가 거의 처리하지만, 너무 많은 정보를 제공합니다. 즉, BuildingRepository에서 findById (buildingId)를 호출하면 발견 된 건물에 연결된 모든 건물이 나에게 제공됩니다.
해결법
-
==============================
1.올바르게 이해하면 @JsonIgnoreProperties 주석이 도움이 될 것입니다.
올바르게 이해하면 @JsonIgnoreProperties 주석이 도움이 될 것입니다.
@JsonIgnoreProperties("site") @OneToMany(mappedBy="site") private List<Building> buildings; @JsonIgnoreProperties("buildings") @ManyToOne private Site site;
from https://stackoverflow.com/questions/47721145/how-to-swap-jsonbackreference-and-jsonmanagedreference-based-on-which-entity-i by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring REST 컨트롤러에서 GET 매개 변수로 매개 변수 매핑 (0) | 2019.05.23 |
---|---|
[SPRING] 멀티 파트 파일로 휴식 서비스 테스트를 시도합니다. (0) | 2019.05.23 |
[SPRING] Spring + Hibernate 애플리케이션에 2 개의 데이터 소스를 주입하면 트랜잭션이 발생하지 않습니다. 진행 중 오류가 발생했습니다. (0) | 2019.05.23 |
[SPRING] Spring 애플리케이션을 Tomcat에 전개 할 수 없다 : applicationContext의 문제점은 무엇인가? (0) | 2019.05.23 |
[SPRING] spring-ws 클라이언트를 사용하는 동안 Jboss에서 스프링 클래스 로더 문제 (0) | 2019.05.23 |