Spring Data REST-URI vs. Entitäts-ID

7

Spring Data REST (und insbesondere Spring HATEOAS) entkoppelt RESTful-IDs (z. B. URIs) von Entitäts-IDs, und ich habe Schwierigkeiten, sie beim Speichern neuer Objekte zu verknüpfen. Siehe die interessante Diskussion um diese Entkoppelung in Ссылка .

Angenommen, eine Clientanwendung möchte eine neue Ticket -Ressource mit einer verknüpften TicketCategory -Ressource erstellen. Ich möchte die Ticket für einen entfernten Spring Data REST Endpunkt veröffentlichen. Das Ticket hat noch keine ID, da es neu ist. Das TicketCategory hat eine ID, aber auf dem Client ist es ein URI für die obige Diskussion. Wenn ich also die Ticket speichere, übergibt Spring Data REST die Ticket an Spring Data JPA, die es nicht mag: Spring Data JPA denkt, dass TicketCategory - ohne Entity ID - transient ist:

%Vor%

UPDATE: Die Dokumentation unter

Ссылка

hat einen Abschnitt namens "Beziehungen aktualisieren", der ein Schema beschreibt, das HTTP-POST verwendet, um Beziehungen zwischen Entitäten herzustellen. Ich weiß nicht, ob das der einzige derzeit verfügbare Ansatz ist, aber es scheint, dass dieser Ansatz es erforderlich machen würde, die Assoziation auf dem ursprünglichen Post null zu lassen und ihn dann mit einem nachfolgenden Post zu aktualisieren. Im obigen Fall wäre das unerwünscht, da das Kategoriefeld ( @NotNull ) für Tickets erforderlich ist.

    
Willie Wheeler 14.10.2012, 06:49
quelle

2 Antworten

12

Haben Sie sich Ссылка angesehen ?

Einfach ausgedrückt: Der Exporteur wird Link-Objekte ablehnen, wenn er sie an Stelle einer Beziehung oder eines verwalteten Objekts (eine andere Entität mit einem exportierten Repository) findet.

Angenommen, Ihre verknüpfte Eigenschaft heißt "category", dann könnten Sie ein neues Ticket erstellen wie:

%Vor%     
Jon Brisbin 23.10.2012, 13:30
quelle
9

Dies sollte in den neueren Versionen von Spring Data Rest geschehen:

%Vor%

Geht es um Oliver Gierkes Kommentar unter Frühling Datenruhe 2.0.0.RELEASE bricht Code, der vorher mit RC1 arbeitete

    
Martin Försterling 14.06.2014 20:44
quelle