2017-09-06 1 views
1

A ---- * B * ----- C (*는 많으므로 A에서 B와 B - C 사이의 양방향이며 B가 많은 양방향 테이블 별표는 많은 것을 나타냅니다).양방향 관계에 대한 JPA 순환 참조

A: 
@OneToMany(mappedBy = "A") 
private List<B> bList; 

B: 
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id") 
@JsonIdentityReference(alwaysAsId=true) 
@ManyToOne 
private A; 

@ManyToOne 
private C; 

C: 
@JsonIgnore 
@OneToMany(mappedBy = "C") 
private List<B> bList; 

내가 먼저 JSON 개체를 가져 오지, 그것은 OK를 검색, 나는 순환 종속성을 제거했지만, 나는 개체가 존재하지 않는 DB에, 나는 DB에서 검색 JSON을 삽입 할. 그래서 저는 A를 직접 저장하려고 시도합니다, aRepository.save (A), 그렇지만 C 객체가 존재하지 않는다는 에러가 발생합니다. 이 경우에는 어떻게 저장할 수 있습니까? B에 대한 C 참조의 json 파일에도 입력해야합니까? 그리고 그렇다면, 어떻게?

EDIT : B와 C 사이의 양방향 관계가 제거되었지만 여전히 작동하지 않습니다.

+0

JSON은 브라우저에서 오는 데이터를 나타냅니다. API가 입력으로 기대하는 바를 최소한으로 설명하는 JSON 구조체를 보냅니다. 영구적 인 엔티티에서 파생 된 JSON을 보내지 마십시오. 이는 완전히 다른 것입니다. 그런 다음이 JSON에서 적절한 코드를 작성하여 엔티티를 작성/업데이트하십시오. –

답변

1

데이터베이스에 삽입하려면 양방향 관계를 다루고 있기 때문에 json을 조작해야합니다. 양면 관계에서 각면이 다른면을 참조해야합니다. 참고로 다루지 않으므로 json에서 정확하게 수행 할 수 없습니다. 그래서 당신은이

{

B의 같은 JSON있는 경우 [을 {A : {}}]

이 동일 모두를 말할 수 없다.

그래서 정말로해야 할 일은 json에서 개체를 검색하고 다른쪽에 관계의 각면을 주입 한 다음 유지하는 것입니다.

관련 문제