Ich habe zwei Entitäten zu speichern:beste Weg Kind Ressource Spring Data REST
@Entity
public class Father{
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "father",cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Child> children;
// other
}
und
@Entity
public class Child{
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
private Father father;
// other
}
Durch die Verwendung von Spring Data REST i Einheit speichern:
Vater Erstellen von POST
{
"name":"Father1"
}
Und dann erstellen Kind durch POST http://localhost:8080/children/
{
"name":"Child1",
"father":"http://localhost:8080/fathers/1"
}
oder ich kann zwei unabhängige Einheiten speichern und bindet die Ressource durch die gegebene URI hingewiesen (s) auf die Ressource.
Welcher Weg ist der beste Weg? Und ich kann das nicht verstehen: kann ich Kind zu Vater hinzufügen:
curl -X PUT -H "ContentType: text/uri-list" http://localhost:8080/children/1 http://localhost:8080/fathers/1/children
Da die Beziehung im untergeordneten Element zugeordnet ist, gehe ich davon aus, dass Sie sie nur dort festlegen können, indem Sie die vater-Eigenschaft festlegen. Vielleicht wäre dies bei einer ManyToMany anders, da Sie dann die Entity zuerst erstellen und dann verknüpfen könnten, ohne sie dabei zu ändern. Aber ehrlich, das ist nur raten, muss damit auch spielen, also: Gute Frage. –
_ "Welcher Weg ist der Beste?" _ Mit welchem Maß? 'PUT' ersetzt eine Ressource, so dass zum Hinzufügen von Kindern die Liste nicht nur die neuen, sondern auch die vorhandenen Kinder enthalten muss. – zeroflagL