Java Morphia保存新实体,而不是更新id

Java Morphia保存新实体,而不是更新id,java,mongodb,morphia,object-identity,Java,Mongodb,Morphia,Object Identity,很抱歉问了一个愚蠢的问题。 我用的是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")

很抱歉问了一个愚蠢的问题。 我用的是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时,morphia会生成一个“新”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"