gpt4 book ai didi

java - Morphia 保存新实体而不是更新 _id

转载 作者:可可西里 更新时间:2023-11-01 09:08:38 24 4
gpt4 key购买 nike

很抱歉这个愚蠢的问题。我正在使用 Morphia 1.00。有一些实体:

@Entity("Vacancy")
public class Vacancy {

@Id
private ObjectId id;
@Version
long version;

private String title;

和其他一些字段,setter 和 getter。试图保存相同的实例:

Vacancy vacancy1 = new Vacancy();
vacancy1.setTitle("Dumm");
Vacancy vacancy2 = new Vacancy();
vacancy2.setTitle("Dumm");

vacancyDao.getDatastore().save(vacancy1);
vacancyDao.getDatastore().save(vacancy2);

据我所知,mongoDb 必须执行 upsert 命令(意思是“如果存在则更新;如果丢失则插入(单个文档)”)。但是,mongo 不只是更新 _id 字段,而是将新实体保存在数据库中。

最佳答案

当您没有为要插入的对象(文档)指定 ObjectId 时,吗啡会生成一个"new"ObjectId 并在对象(文档)可以插入之前设置它。

因此,每个没有 ObjectId 的对象都将被赋予新的且唯一的 objectId,并且该对象将被视为新的“文档”。

如果你想更新,做类似的事情

Vacancy vacancy1 = new Vacancy();
vacancy1.setTitle("Dumm");
Vacancy vacancy2 = new Vacancy();
vacancy2.setTitle("Dummmmm");

vacancyDao.getDatastore().save(vacancy1);

vacancy2.setId(vacancy1.getId());
vacancyDao.getDatastore().save(vacancy2);//This line will update the "Dumm" to "Dummmmm"

关于java - Morphia 保存新实体而不是更新 _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7271960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com