In Morphia wie kann ich ein update für ein eingebettetes Objekt in einer ArrayList
Wirklich neues, um Mit Mongodb mit Morphia und viele erweiterte Antworten, wie dies zu tun.
Ich möchte es einfach, wenn es möglich ist und ich habe diese @Embedded
Objekt namens
fileObjects
enthält Files
Objekte.
Kann ich Nicht aktualisieren Sie die Felder innerhalb der Files
.
Will ich update nur ein Feld f.ab der String fileHash
.
@Entity
public class BatchData {
@Id private ObjectId id;
@Embedded
public ArrayList<Files> fileObjects = new ArrayList<Files>();
}
UPDATE..
Lesen Sie die wiki auf Morphia Aktualisieren nicht "wirklich" sagen, wie zu tun dies nur, wenn das array enthält Integer
wie diese:
@Embedded
List<Integer> roomNumbers = new ArrayList<Integer>();
Hier ist, was ich versuchen so weit:
mongo.createUpdateOperations(BatchData.class).add("fileObjects", Files, false);
Den Files
Sie, dass dieser code einzufügen ist bereits in der mongo. Die false
nicht erkennen, dass und fügen es an das Ende des Arrays. Kann ich eine unique-id, um die Files
so dass Sie erkennen, dass das Files
bin einfügen vorhanden sind im array, und dann einfach aktualisieren?
@Embedded
public class Files
{
public Files() {
}
public int position;
public String fileName = "";
public String fileHash = "";
public Files(int pos, String fileName, String fileHash) {
this.position = pos;
this.fileName = fileName;
this.fileHash = fileHash;
}
}
Dem Lesen der anderen Antworten wie morphia-mongodb-Zugriff auf aber er habe bereits die
@Entity BlogEntry(siehe link) in ein POJO außerhalb von mongo. Vielleicht habe ich das gleiche zu tun?
Ziehen Sie es aus, verändern es und speichern Sie es zurück?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantwortung meiner eigenen Frage für jeden, der Freude.
Ich denke, ich löste es, nicht sicher.
Es sieht aus wie es ' s arbeiten im testen, wenn die
fileObjects
haben vieleFiles
.Das Recht
fileHash
aktualisiert wird, in der Tat.In meinem Fall war ich in der Lage, verwenden Sie die removeAll-Methode:
Diese davon ausgehen, dass MyType hat der Feldliste myEmbeddedList; und dass es eine vlue "thevalue" werden aus der Liste entfernt.
Ich habe gerade (ja, jetzt) das problem gelöst, in dieser Weise:
Ich bekomme die root-Klasse mit einer Abfrage
Dann, implementierte ich die CRUD-Operationen innerhalb dieses root-Klasse (werde ich nach meinem root-Klasse):
Einmal, ich veränderte meine Anwendung Daten, die ich nur speichern Sie es auf mongodb im Hauptprogramm mit:
Hoffe das kann dir helfen, bye!