在此处创建的GitHub问题:https://github.com/MorphiaOrg/morphia/issues/1388
据我所知,Datastore#merge(object)方法会将$传递的对象中的所有持久字段设置为具有匹配objectID的对象的数据库。
对于我正在处理的项目,我需要合并数据库中传递的对象中的所有字段。这样我的对象中的瞬变字段将保持不变,并且我的对象将是同一实例-但这些字段将更新为数据库中的值,
,或者即使有一种使用预先存在的对象创建查询的方法,也可以将数据库中的字段写入到其中。
类似datastore.createQuery(MyClass.class, myObject)
想知道是否有人知道采用当前Morphia实现的方法。 基本上,不是希望Morphia的对象工厂为查询创建类的新实例,而是希望它使用预先存在的对象并覆盖字段值。
我想知道这样的事情是否可行:
public void updateFromNewer(X entity, X update) {
datastore.getMapper().getMappedClass(entity).getPersistenceFields().forEach(mf -> {
mf.setFieldValue(entity, mf.getFieldValue(update));
});
}
但是看起来很混乱
我基本上需要使用此功能的相反功能:
datastore.merge(entity);
上述方法$set
将提供的实体的持久字段插入数据库。
没有错误或任何东西,只是不确定如何实现。
使用最新的Morphia和MongoDB。