加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Morphia中如何更新ArrayList中的一个嵌入对象

发布时间:2020-12-15 08:47:22 所属栏目:Java 来源:网络整理
导读:使用 Mongodb和Morphia并看到很多高级答案如何做到这一点真的很新. 如果有可能我想简单地做这个@Embedded对象 包含文件对象的fileObjects. 我无法更新文件中的字段. 我想只更新一个字段f.ex String fileHash. @Entitypublic class BatchData { @Id private O
使用 Mongodb和Morphia并看到很多高级答案如何做到这一点真的很新.

如果有可能我想简单地做这个@Embedded对象
包含文件对象的fileObjects.

我无法更新文件中的字段.

我想只更新一个字段f.ex String fileHash.

@Entity
public class BatchData {

    @Id private ObjectId id;
    @Embedded
    public ArrayList<Files> fileObjects = new ArrayList<Files>();
}

UPDATE ..
在Morphia Updating阅读维基不要“真的”说如何只在数组包含这样的整数时才这样做:

@Embedded
   List<Integer> roomNumbers = new ArrayList<Integer>();

以下是我到目前为止的尝试:

mongo.createUpdateOperations(BatchData.class).add("fileObjects",Files,false);

此代码插入的文件已在mongo中. false不会检测到它并将其插入数组的末尾.我可以在文件中添加唯一ID,以便检测到数据中是否存在要插入的文件,然后只更新它?

@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;
    }
}

阅读其他答案,如morphia-mongodb-accessing,但他已经有了
@Entity BlogEntry(参见链接)在mongo之外的POJO中.也许我必须这样做?
拉出来,换掉它并保存回去?

解决方法

为任何人的喜悦回答我自己的问题.

我想我解决了它不确定.
当fileObjects有很多文件时,看起来它正在测试.
正确更新了正确的fileHash.

UpdateOperations<BatchData>updateOperations=mongo.createUpdateOperations
             (BatchData.class)
            .disableValidation().set("fileObjects.$.fileHash",hash).enableVali..;

mongo.update(mongo.createQuery(BatchData.class)
            .filter("uuid",theBatch.uuid)
            .filter("fileObjects.fileName","theFileName"),updateOperations);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读