Ich wollte das Beispiel Zugriff auf JPA-Daten mit REST erweitern, indem ich eine Liste mit Adressen hinzufüge Person
Einheit. Also habe ich eine Liste addresses
mit @OneToMany
Annotation hinzugefügt:
Die Klasse Address
ist sehr einfach:
Und schließlich habe ich die AddressRepository
Schnittstelle hinzugefügt:
Dann habe ich versucht, eine Person mit einigen Adressen zu POST:
%Vor%Der Fehler, den ich bekomme, ist:
%Vor%Welches ist die richtige Methode, um eine zu vielen und viele zu vielen Beziehungen zu erstellen und json-Objekte an sie zu senden?
Sollte Ihr Ruheservice keine Person anstelle einer Adresse akzeptieren?
%Vor%Oder vielleicht versuchst du zwei verschiedene Rastleistungen zu machen, die ich nicht verstehe. Sie sollten nur einen Ruhe-Service haben, der eine Person mit Adresseinträgen aufnimmt.
Ich konnte dieses Problem beheben, indem ich das referenzierte Repository nicht exportiere. Dies fügt die Anmerkung oben auf der Oberfläche hinzu. In Ihrem Beispiel wäre das so:
%Vor%Dies löst das Problem teilweise, da Spring Data die Fremdschlüssel für Sie nicht weitergibt. Es wird jedoch weiterhin Ihre Person und Adresse (ohne den Verweis auf die Person, die dazu gehört) beibehalten. Wenn wir dann einen weiteren Aufruf an die API machen würden, um diese fehlenden Fremdschlüssel zu aktualisieren, könnten Sie eine Person über die API mit all ihren verknüpften Adressen erreichen - wie @Francesco Pitzalis bereits erwähnt hat
Ich hoffe, es hilft. Nur eine letzte Notiz. Ich arbeite immer noch daran, weil ich es für lächerlich halte (ebenso wie grundlegend und notwendig), dass Hibernate die Fremdschlüssel nicht für uns verbreiten kann. Es sollte irgendwie möglich sein.
EDITED: In der Tat war es möglich. Die folgende Implementierung ist in der Lage, eine Entität und ihre untergeordneten Elemente für eine Architektur basierend auf Spring Data (Rest - wie wir die Repositories offen legen), Hibernate 5.0.12Final und MySQL mit der Speicher-Engine InnoDB (nicht im Speicher) für die Fremdschlüssel zu propagieren Datenbank).
%Vor%Ссылка - Das war entscheidend.
%Vor%Das ist extrem wichtig. Sie müssen wissen, wo Hibernate die SQL-Anweisungen ausführt, um den Dialekt richtig einzustellen. Für mich ist die Speicher-Engine meiner Tabellen InnoDB. Die nächste Verbindung half. Welchen mysql-Treiber verwende ich mit spring / hibernate? >
%Vor%Das einzige, was ich nicht erklären konnte, ist, dass ich jetzt das "Kind" -Repository exportieren kann und es funktioniert immer noch gut. Irgendwelche Ideen, Leute?
Tags und Links java spring-data-jpa rest spring-data-rest