Morphia 保存新实体而不是更新 _id
抱歉问了一个非常愚蠢的问题。 我正在使用 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 字段,而是将新实体保存在数据库中。
Sorry for very dumb question.
I'm using Morphia 1.00.
Have some entity:
@Entity("Vacancy")
public class Vacancy {
@Id
private ObjectId id;
@Version
long version;
private String title;
and some other fields, setter and getters.
Trying to save identical instances:
Vacancy vacancy1 = new Vacancy();
vacancy1.setTitle("Dumm");
Vacancy vacancy2 = new Vacancy();
vacancy2.setTitle("Dumm");
vacancyDao.getDatastore().save(vacancy1);
vacancyDao.getDatastore().save(vacancy2);
As I know, mongoDb must execute upsert command(means "update if present; insert (a single document) if missing").
But instead of just updating the _id field, mongo saves new entity in the DB.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您没有为要插入的对象(文档)指定 ObjectId 时,morphia 会生成一个“新”ObjectId 并在插入对象(文档)之前设置它。
因此,每个没有 ObjectId 的对象都将被赋予新的且唯一的 objectId,并且该对象将被视为新的“文档”。
如果你想更新,请执行类似的操作
When you dont specify the ObjectId for an object(document) which you are going to insert, morphia generates a 'new' ObjectId and sets it before the object(document) could inserted.
So, every object which doesn't have the ObjectId will be given new and unique objectId and the object will be treated as new "document".
If you want to update, do something like