2017-05-09 2 views
0

Ich spiele mit der Spring Data examples. Ich habe ein Entity Parent definiert, dem mehrere untergeordnete Entitäten zugeordnet sind.Untergeordnete Entitäten in einer einzigen Anfrage mit Spring Data

@Entity 
@Table 
@Data 
public class Parent { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    @NotNull 
    private String name; 

    @Fetch(FetchMode.SUBSELECT) 
    @OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true) 
    private Set<Child> childs; 

} 

@Entity 
@Table 
@Data 
public class Item { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    @NotNull 
    private String name; 

} 

Und die entsprechenden Repositories. Mein Problem ist, dass beim Buchen mit curl ein neuer Parent mit einem Child, ich den Fehler Could not read JSON document: Failed to convert from type [java.net.URI] to type auch beschrieben here. Die Antwort auf diese Frage besagt, dass untergeordnete Entitäten vorher gepostet werden müssen, und verwenden Sie dann die zurückgegebene URL. Das ist der gleiche Prozess, der in this answer von Oliver Gierke beschrieben wird.

Gibt es eine Möglichkeit, Spring Data so zu konfigurieren, dass ganze untergeordnete Entitäten deserialisiert werden?

Antwort

1

Wenn Sie nicht das Repository für Item exportieren (durch das Repository mit @RepositoryRestResource(exported = false) Anmerkungen versehen) werden Sie immer das Kind serialisiert bekommen und auch Sie können es mit einem POST auf dem übergeordneten bieten.

Es wird aber auch keinen REST-API-Endpunkt der obersten Ebene für Item mehr geben und auch keine Assoziationsressource auf dem übergeordneten Element.

Sie haben bereits cascade=ALL auf die Beziehung - so sollte dieser Ansatz funktionieren.

Verwandte Themen