MorphiaでMongodbを使うのは本当に新しいです。MorphiaでArrayList内の埋め込みオブジェクトを更新するにはどうすればいいですか
私はそれが可能だと私はFiles
オブジェクトが含まれてい
fileObjects
と呼ばれるこの@Embedded
オブジェクトを持っている場合、それをシンプルにしたいと思います。
I Files
内のフィールドを更新できません。
String fileHash
のフィールドf.exを1つだけ更新したいとします。
@Entity
public class BatchData {
@Id private ObjectId id;
@Embedded
public ArrayList<Files> fileObjects = new ArrayList<Files>();
}
Morphia UpdatingでWikiを読むUPDATE ... は「本当に」配列は、このようなInteger
が含まれている場合にのみ、これを行う方法を言ういけない:ここで
@Embedded
List<Integer> roomNumbers = new ArrayList<Integer>();
は私がこれまでにしようとするものです:
mongo.createUpdateOperations(BatchData.class).add("fileObjects", Files, false);
Files
このコードの挿入はすでにmongoにあります。 false
はそれを検出せず、アレイの最後に挿入します。 Files
に一意のIDを追加して、Files
が挿入されていることを検出してから、それを更新することはできますか?
@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;
}
}
モンゴの外POJOに(リンクを参照)morphia-mongodb-accessingのような他の回答を読んで、彼はすでに
@Entity BlogEntryを持っています。多分私は同じことをしなければならないでしょうか?
引き出して変更して元に戻しますか?
非常にうまく動作します。モルフィアはそれをネイティブにサポートすべきです。この "$"演算子を使用するための検証を無効にする必要があります。 –