So aktualisieren Sie ein Objekt in play framework?
Wie Bearbeite ich ein bestehendes Objekt in der Datenbank? Zum Beispiel, wenn ich ein Modell wie dieses:
class Topic{title,content,author}
, wenn ich Sie Bearbeiten und speichern Sie das Objekt will ich nicht fügen Sie die "Autor" - Objekt wieder. Wie update ich mein vorhandenes Objekt, anstatt eine neue anzulegen?
- Wenn eine der Antworten, du hast dein problem gelöst hat, bitte akzeptieren Sie Sie durch klicken auf das Häkchen.
- ich denke, ich habe nicht mich selbst zu löschen, anderes Beispiel: meine vorhandene Objekt Thema(id:1,content:'xxx',author:'roy'...) , jetzt habe ich ein Objekt übergeben, wie im Thema(id:1,content:'yyy',Autor:null...)。wie kann ich aktualisieren Sie einfach die not null-Felder ? gibt es irgendeine einfache Möglichkeit das zu tun ?
- Oh, Sie nur aktualisieren möchten bestimmte Felder und nicht andere? Nicht einfach, aber siehe meine Antwort unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Erben von der Model-Klasse (als Sie sollten), es bietet eine
save()
Methode als auch ein ID-Attribut. Wenn Sie anrufensave()
auf ein Objekt, das Sie haben werden aus der Datenbank werden aktualisiert, und rufen Sie es auf ein neues Objekt wird in der Datenbank gespeichert werden. Es ist alles automagischen!Aktualisieren nur bestimmte Felder
Model.save()
speichert das gesamte Objekt, so dass, wenn Sie aktualisieren möchten nur einige Datenfelder in Ihrem Objekt haben, müssen Sie zunächst konstruieren Sie das genaue Objekt, das Sie wollen, gehen Sie in Ihre Datenbank. Also lassen Sie uns sagen Sie, dass Sie nicht wollen, zu aktualisieren, die null-Felder unter IhreTopic(id, content, author)
Objekt:Das ist, wie ich es tun würde. Je nachdem, wie viele Felder Sie diesen code wird man wirklich klobig wirklich schnell. Auf jeden Fall setzen Sie es in eine Methode. Auch, siehe hier über findByID() und andere Möglichkeiten zum ziehen von Objekten aus der Datenbank.
Wenn man sich die JPA-Objekt-Bindung Teil der Dokumentation, Sie werden sehen, es erklärt, dass, wenn Sie übergeben Sie ein Objekt, um Ihren controller, enthält eine ID, die das Objekt zunächst automatisch aus der Datenbank geladen, und dann die neuen Felder übergeben werden, die dem Objekt Hinzugefügt.
Dies bedeutet, Sie können rufen Sie einfach die
save()
Methode.So, Sie controller-Aktion könnte so etwas wie