2016-05-26 8 views
1

Ich versuche, eine POST-Anfrage zum Speichern einer Entität in einem Spring Data Rest-Repository zu senden.Spring Data Rest: Wie speichert man eine Eigenschaft, die ein Array einer anderen Entität ist?

Das Speichern ist in Ordnung, aber nur für einfache Objekte wie Strings, etc ...

Aber wenn ich eine komplexe Eigenschaft speichern haben (wie eine Liste <OtherEntity> otherEntities), die damit verbundene Objekt nicht verbunden ist in der Ressource.

Ich versuche, ein JSON in diesem Format zu senden:

{ 
    "property": "value", 
    "otherEntities" : "http://localhost:8080/myapp/api/otherEntities/1" 
} 

Das Objekt es gespeichert, aber der Link:

http://localhost:8080/myapp/api/objects/1/otherEntities

gibt ein leeres Array von "otherEntities" statt des Objekts, das an der URL erreichbar ist:

http://localhost:8080/myapp/api/otherEntities/1

Irgendeine Idee wird es geschätzt werden.

Antwort

1

Wenn Sie als erstes an eine List-Eigenschaft senden möchten, müssen Sie sie mit [] umgeben. So würde das JSON-Format haben:

{ 
    "property": "value", 
    "otherEntities" : ["http://localhost:8080/myapp/api/otherEntities/1"] 
} 

Zweitens nehme ich an Sie @OneToMany oder @ManyToMany Beziehung verwenden. Diese Annotationen haben eine Eigenschaft "mappedBy" in einer der Beziehungsseiten. Beachten Sie, dass Sie die Relation nur von der Seite aus speichern können, die nicht die Eigenschaft "mappedBy" enthält. Wenn Sie die Beziehung von der anderen Seite speichern, wird dies nicht gespeichert.