2017-09-06 1 views
1

Ich habe 3 Tabellen wie folgt A ---- * B * ----- C (* ist viele, also ist bidirektional von A nach B und B - C, mit vielen auf B , der Stern zeigt viele an).JPA Kreisreferenz auf bidirektionale Beziehung

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; 

ich zuerst das JSON-Objekt retrive wird abgerufen OK, habe ich die zirkuläre Abhängigkeiten beseitigt, aber dann möchte ich die json ich in DB abgerufen einzufügen, auf einem DB, wo das Objekt nicht existiert. Also versuche ich A direkt zu speichern, aRepository.save (A), aber dann bekomme ich einen Fehler, dass C-Objekt nicht existiert. Wie kann ich in diesem Fall speichern, sollte ich in der JSON-Datei in C Referenzen auf B auch einfügen? Und wenn ja, wie?

EDIT: bidirektionale Beziehung zwischen B und C entfernt und immer noch nicht funktioniert.

+0

JSON repräsentiert Daten, die vom Browser kommen. Senden Sie eine JSON-Struktur, die am besten und minimal beschreibt, was die API als Eingabe erwartet. Senden Sie kein JSON, das von den persistenten Entitäten abgeleitet ist, was eine völlig andere Sache ist. Dann, von diesem JSON, erstellen/aktualisieren Sie die Entitäten, indem Sie den entsprechenden Code schreiben. –

Antwort

1

Das Einfügen in die Datenbank erfordert einige Manipulation Ihres json, da Sie mit bidirektionalen Beziehungen zu tun haben, in bidirektionaler Beziehung sollte jede Seite einen Verweis auf die andere Seite haben, dies kann nicht genau in json durchgeführt werden, da wir nicht mit Referenz beschäftigen also, wenn Sie json wie diese

A {

B [{A: {}}]

Sie können nicht beide A sagen, sind die gleichen.

Also was Sie wirklich tun müssen, ist, die Objekte von Ihrem JSON abzurufen und injizieren jede Seite der Beziehung in der anderen dann bestehen sie.

Verwandte Themen